Неверный персонаж с Invoke-CimMethod

В настоящее время я работаю над сценарием PowerShell для создания развертывания ZTI с SCCM для наших компьютеров. Последний шаг сценария - очистить старый запрос PXE, чтобы компьютер был "доступен" для нового развертывания при следующей перезагрузке. В настоящее время я использую ту команду WMI, которая работает "хорошо" (за исключением той части, которая всегда возвращает StatusCode, равный 0, даже для несуществующего компьютера):

Invoke-WmiMethod -Namespace "root\SMS\Site_PR1" -Class SMS_Collection -Name ClearLastNBSAdvForMachines -computername $ComputerName -ArgumentList (,"$ComputerID")

Я пытаюсь (для любопытства и прочее) вызвать тот же метод с Invoke-CimSession вместо. К сожалению, я не могу построить правильную переменную "аргумент" для отправки в метод.

Я знаю, что метод ожидает хеш-таблицу, содержащую ключ "ResourceIDs" со значениями типа MI_UINT32A.

Я попытался несколько способов отправить мои аргументы без успеха. Я знаю, что с хеш-таблицей все в порядке, но, похоже, проблема в значении. Я всегда получаю сообщение об ошибке CIMException, в котором говорится, что Диспетчер веб-служб не может разрешить мой запрос из-за недопустимого символа и что он не может преобразовать строку в число (свободно переведено с французского):

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

Я полагаю, что решение вполне очевидно, но я не вижу, что я делаю неправильно. Так что любая помощь будет оценена!

0 ответов

Другие вопросы по тегам