Private/Get-CmWmiObject.ps1
function Get-CmWmiObject { param ( $Class, [parameter(Mandatory=$False)] [string] $Filter = '', [parameter(Mandatory=$False)] [string] $Query = '', [parameter(Mandatory=$False)] $ComputerName, [parameter(Mandatory=$False)] [string] $Namespace = "root\cimv2", [parameter(Mandatory=$False)] [string] $LogFile, [parameter(Mandatory=$False)] [bool] $ContinueOnError = $false ) if ($query -ne '') { $class = $query } Write-Log -Message "WMI Query: \\$ComputerName\$Namespace, $class, filter: $filter" -LogFile $logfile if ($query -ne '') { $WMIObject = Get-WmiObject -Query $query -Namespace $Namespace -ComputerName $ComputerName -ErrorAction SilentlyContinue } elseif ($filter -ne '') { $WMIObject = Get-WmiObject -Class $class -Filter $filter -Namespace $Namespace -ComputerName $ComputerName -ErrorAction SilentlyContinue } else { $WMIObject = Get-WmiObject -Class $class -NameSpace $Namespace -ComputerName $ComputerName -ErrorAction SilentlyContinue } if ($WMIObject -eq $null) { Write-Log -Message "WMI Query returned 0) records" -LogFile $logfile } else { $i = 1 foreach ($obj in $wmiobj) { i++ } Write-Log -Message "WMI Query returned $($i) records" -LogFile $logfile } if ($Error.Count -ne 0) { $errorMessage = $Error[0].Exception.Message $errorCode = "0x{0:X}" -f $Error[0].Exception.ErrorCode if ($ContinueOnError -eq $false) { Write-Log -Message "The following error occurred, no futher action taken" -Severity 3 -Logfile $logfile } else { Write-Error "The following error occurred" } Write-Log -Message "ERROR $errorCode : $errorMessage connecting to $ComputerName" -LogFile $logfile $Error.Clear() if ($ContinueOnError -eq $false) { Throw "ERROR $errorCode : $errorMessage connecting to $ComputerName" } } Write-Output $WMIObject } |