1

我目前正在使用 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

我想解决方案很明显,但我看不出我做错了什么。所以任何帮助将不胜感激!

4

0 回答 0