Public/Get-ALHCMBaseline.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
<#PSScriptInfo .VERSION 1.0.0 .GUID cd2fe7d0-d9da-4203-b8d2-b6932bcf5b24 .AUTHOR Dieter Koch .COMPANYNAME .COPYRIGHT (c) 2021-2023 Dieter Koch .TAGS .LICENSEURI https://github.com/admins-little-helper/ALH/blob/main/LICENSE .PROJECTURI https://github.com/admins-little-helper/ALH .ICONURI .EXTERNALMODULEDEPENDENCIES .REQUIREDSCRIPTS .EXTERNALSCRIPTDEPENDENCIES .RELEASENOTES 1.0 - Initial Release #> <# .DESCRIPTION Contains function to get a list of baselines on a Configuration Manger client. #> function Get-ALHCMBaseline { <# .SYNOPSIS Gets a list of baselines on a Configuration Manger client. .DESCRIPTION The function 'Get-ALHCMBaseline' gets a list of baselines on a Configuration Manger client. .PARAMETER ComputerName Computer to check. Default is the local computer. .EXAMPLE Get-ALHCMBaseline -BaselineName "MyBaseline1" Triggers the evaluation of baseline with name "MyBaseline1" on the local computer. .EXAMPLE Get-ALHCMBaseline Triggers the evaluation of all baselines on the local computer. .EXAMPLE Get-ALHCMBaseline -ComputerName CLIENT01 -BaselineName "Baseline XYZ" Triggers the evaluation of baseline with name "Baseline XYZ" on the remote computer named "CLIENT01". .INPUTS System.String for parameter 'ComputerName' .OUTPUTS PSCustomObject .NOTES Author: Dieter Koch Email: diko@admins-little-helper.de .LINK https://github.com/admins-little-helper/ALH/blob/main/Help/Get-ALHCMBaseline.txt #> [OutputType([PSCustomObject])] [CmdletBinding(DefaultParameterSetName = "default")] param ( [Parameter(ValueFromPipeline)] [string[]] $ComputerName = $env:COMPUTERNAME, [string] $BaselineName = "*" ) process { foreach ($SingleComputer in $ComputerName) { $ComputerOnline = $false $ErrorMessage = "None" # Set parameters for the Get-CimInstance cmdlet $GetCimInstanceParams = @{ Namespace = 'root\ccm\dcm' ClassName = 'SMS_DesiredConfiguration' ErrorAction = 'Stop' } if ($SingleComputer -eq $env:COMPUTERNAME) { Write-Verbose -Message "Skipping connection test for local computer." $ComputerOnline = $true } else { Write-Verbose -Message "Testing if computer is online: $SingleComputer" $GetCimInstanceParams.ComputerName = $SingleComputer $ComputerOnline = Test-Connection -ComputerName $SingleComputer -Count 2 -Quiet -ErrorAction SilentlyContinue } if ($ComputerOnline) { $Baselines = $null Write-Verbose -Message "Trying to run on computer: $SingleComputer" try { Write-Verbose -Message "Trying to enumerate the baselines existing on computer '$SingleComputer'" $Baselines = Get-CimInstance @GetCimInstanceParams } catch { $ErrorMessage = $_.Exception.Message Write-Warning -Message "Error enumerating baselines on computer '$SingleComputer': $ErrorMessage" } foreach ($BaselineItem in $Baselines) { $Result = [PSCustomObject]@{ ComputerName = $SingleComputer BaselineName = $BaselineItem.Name BaselineDisplayName = $BaselineItem.DisplayName BaselineVersion = $BaselineItem.Version BaselineLastEvalTime = $BaselineItem.LastEvalTime BaselineStatus = $BaselineItem.Status BaselineLastComplianceStatus = $BaselineItem.LastComplianceStatus } $Result } } else { Write-Warning "Computer is not reachable: $SingleComputer" } } } } #region EndOfScript <# ################################################################################ ################################################################################ # # ______ _ __ _____ _ _ # | ____| | | / _| / ____| (_) | | # | |__ _ __ __| | ___ | |_ | (___ ___ _ __ _ _ __ | |_ # | __| | '_ \ / _` | / _ \| _| \___ \ / __| '__| | '_ \| __| # | |____| | | | (_| | | (_) | | ____) | (__| | | | |_) | |_ # |______|_| |_|\__,_| \___/|_| |_____/ \___|_| |_| .__/ \__| # | | # |_| ################################################################################ ################################################################################ # created with help of http://patorjk.com/software/taag/ #> #endregion |