![](/img/trans.png)
[英]Invoke-WMIMethod convert to Invoke-CimMethod with ciminstance as Argument error
[英]Error when triggering installation of SCCM updates with Invoke-CimMethod
我正在嘗試通過調用 Powershell 中的 CIM 方法來觸發將 SCCM 通告的更新安裝到某些特定計算機上 7. 不管該命令觸發了所需的操作,我仍然總是收到錯誤消息。
Invoke-CimMethod:Es wurde keine Instanz mit den Eigenschaftswerten gefunden。
或翻譯成英文:
Invoke-CimMethod:找不到具有給定屬性值的實例。
這是代碼:
$COMPUTERNAME = 'RemoteComputer01'
$CIMSession = New-CimSession -ComputerName $COMPUTERNAME
$GetCimInstanceParams = @{
NameSpace = 'ROOT\ccm\ClientSDK'
ClassName = 'CCM_SoftwareUpdate'
Filter = 'ComplianceState = 0'
CimSession = $CIMSession
ErrorAction = 'Stop'
}
$InvokeCimMethodParams = @{
Namespace = 'ROOT\ccm\ClientSDK'
ClassName = 'CCM_SoftwareUpdatesManager'
MethodName = 'InstallUpdates'
Arguments = @{ CCMUpdates = [ciminstance[]](Get-CimInstance @GetCimInstanceParams) }
CimSession = $CIMSession
ErrorAction = 'Stop'
}
Invoke-CimMethod @InvokeCimMethodParams
而且無論我如何嘗試調用 CIM 方法 - splatted 或在一行中 - 我總是得到錯誤。
Invoke-CimMethod -Namespace 'root/ccm/ClientSDK' -ClassName 'CCM_SoftwareUpdatesManager' -ComputerName $ComputerName -Arguments @{ CCMUpdates = [ciminstance[]] (Get-CimInstance -Namespace 'root/ccm/ClientSDK' -ClassName 'CCM_SoftwareUpdate' -ComputerName $ComputerName) } -MethodName 'InstallUpdates'
怎么了? 如何擺脫錯誤並獲得返回值?
萬一以后有人對它感興趣……;-)
最終至少找到了一個我可以接受的解決方法。
我現在使用的是 PS session 而不是 CIM session 並實際在本地運行命令。
$COMPUTERNAME = 'RemoteComputer01'
$PSSession = New-PSSession -ComputerName $COMPUTERNAME
Invoke-Command -Session $PSSession -ScriptBlock {
$GetCimInstanceParams = @{
NameSpace = 'ROOT\ccm\ClientSDK'
ClassName = 'CCM_SoftwareUpdate'
Filter = 'ComplianceState = 0'
ErrorAction = 'Stop'
}
$InvokeCimMethodParams = @{
Namespace = 'ROOT\ccm\ClientSDK'
ClassName = 'CCM_SoftwareUpdatesManager'
MethodName = 'InstallUpdates'
Arguments = @{ CCMUpdates = [ciminstance[]](Get-CimInstance @GetCimInstanceParams ) }
ErrorAction = 'Stop'
}
Invoke-CimMethod @InvokeCimMethodParams
}
這為我提供了正確的返回碼。
與 PowerShell 5 相同的問題,我更新了我的代碼以忽略該錯誤
[ciminstance[]]$Application = (Get-CIMinstance -CIMSession $CIMsession -Namespace "root\ccm\clientSDK" -Class CCM_SoftwareUpdate | Where-Object { $_.EvaluationState -like "*$($AppEvalState0)*" -or $_.EvaluationState -like "*$($AppEvalState1)*"})
Invoke-CimMethod -Namespace root\ccm\clientsdk -ClassName CCM_SoftwareUpdatesManager -MethodName 'InstallUpdates' -Arguments @{CCMUpdates = $Application} -CimSession $CIMsession -ErrorAction SilentlyContinue |out-null
if($error[0] -notlike "*no instance found*"){
Write-log "Error found $($error)"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.