我目前正在使用PowerShell脚本为我们的计算机创建带SCCM的ZTI部署。该脚本的最后一步是清除旧的PXE请求,以便计算机在下次重新启动时“可用”进行新部署。 我目前正在使用工作“正常”的WMI命令(除非对于不存在的机器,它总是返回一个等于0的StatusCode的部分除外):
Invoke-WmiMethod -Namespace "root\SMS\Site_PR1" -Class SMS_Collection -Name ClearLastNBSAdvForMachines -computername $ComputerName -ArgumentList (,"$ComputerID")
我正在尝试(好奇心和东西)用Invoke-CimSession
来调用相同的方法。遗憾的是,我似乎无法构建正确的“参数”变量来发送给方法。
我知道该方法需要一个包含密钥“ResourceIDs”的散列表,其值为MI_UINT32A。
我尝试了多种方式发送我的论据但没有成功。我知道哈希表很好,但价值似乎是问题所在。我总是收到一条CIMException错误消息,指出 Web服务管理器无法解析我的查询,因为存在无效字符,并且无法将字符串转换为数字(从法语中松散翻译):
Invoke-CimMethod : Le service Gestion des services Web ne peut pas traiter la demande, car elle contient un caractère non valide. Le service Gestion des services Web ne
peut pas convertir la chaîne en nombre. Chaîne: true. Assurez-vous que la chaîne représente le type de données approprié.
到目前为止,我的代码看起来像这样:
$arguments = @{
ResourceIDs = [uint32[]]($ComputerID)
}
Invoke-CimMethod -CimSession $CimSession -Namespace root\sms\site_PR1 -ClassName SMS_Collection -MethodName ClearLastNBSAdvForMachines -Arguments $arguments
我在哈希表上做了一个.gettype(),它确认我的演员阵容(可能)很好:
PS C:\> $arguments.ResourceIDs.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True UInt32[] System.Array
我认为解决方案很明显,但我看不出我做错了什么。所以任何帮助都将不胜感激!