私が書いているコードは、CIM を使用してサーバーで現在利用可能なパッチを開始することを想定しています。また、ネットワークに必要な DCOM プロトコルのため、CIM を使用する必要があります。
見やすくするために ` を使用しています
次の wmi コードが機能します。
$ComputerName = 'Foo'
[System.Management.ManagementObject[]] $CMMissingUpdates = @(`
Get-WmiObject -ComputerName $ComputerName `
-Query "SELECT * FROM CCM_SoftwareUpdate WHERE ComplianceState = '0'" `
-Namespace "ROOT\ccm\ClientSDK" `
-ErrorAction Stop)
$null = (Get-WmiObject -ComputerName $ComputerName `
-Namespace "root\ccm\ClientSDK" `
-Class "CCM_SoftwareUpdatesManager" `
-List).InstallUpdates($CMMissingUpdates)
動作しない CIM を使用して作成したもの:
$null = (Invoke-CimMethod -CimSession $Computer.CimSession `
-Namespace 'ROOT\ccm\ClientSDK' `
-ClassName 'CCM_SoftwareUpdatesManager' `
-MethodName 'InstallUpdates').InstallUpdates($CMMissingUpdates)
自分の解決策に興味があるだけでなく、Invoke-CimMethod
それがどのように解決されたかにも興味があります。CIM でクラスのメソッドを表示および実装する方法を判断できないようです。