Как отформатировать вывод CCM_UserAffinity в tyoe Microsoft.PowerShell.Commands.LocalPrincipal - PullRequest
0 голосов
/ 23 апреля 2019

Я пытаюсь создать сценарий развертывания, который добавляет недавно развернутых основных пользователей рабочей станции в локальную группу администраторов.Я использовал класс CCM_userAffinity для получения имени пользователя, однако - Add-LocalGroupMember не принимает его выходные данные.

Я попытался создать переменную последовательности задач для передачи в сценарий powershell, который также безуспешно добавляет в группу.Предпочтительно, чтобы решение было интегрировано в TS развертывания, однако из-за неудачи я вернулся к развертыванию пакета ps.

$computer = "LocalHost" 
$namespace = "root\ccm\Policy\Machine" 
$query = "ConsoleUser"
$PrimaryUser = Get-WmiObject -class CCM_UserAffinity -computername $computer -namespace $namespace | select-object $query | format-wide

Я ожидал, что выходные данные из -class CCM_UserAffinity будут приняты Add-LocalGroupMember, однако яполучите это вместо этого - Add-LocalGroupMember: Невозможно связать параметр 'Member'.Не удалось преобразовать значение «Microsoft.PowerShell.Commands.Internal.Format.FormatStartData» типа «Microsoft.PowerShell.Commands.Internal.Format.FormatStartData» в тип «Microsoft.PowerShell.Commands.LocalPrincipal".

1 Ответ

1 голос
/ 23 апреля 2019

Поскольку вы планируете использовать извлекаемое вами значение, а не отображать его, нет необходимости использовать что-то вроде "format-wide", которое только делает вывод понятным для человека и является причиной вашего типа данных FormatStartData.

Вы можете просто использовать:

$PrimaryUser = (Get-WmiObject -class CCM_UserAffinity -computername $computer -namespace $namespace).ConsoleUser

, который возвращает строку и принимается аргументом -Member Add-LocalGroupMember

Следует иметь в виду, что в теориибыть более чем одним ConsoleUser на машину.Таким образом, ConsoleUser может быть массивом или нет.Если вы можете гарантировать, что в вашей среде всегда есть только один пользователь на одну машину (в момент запуска ts), вы можете просто использовать его как есть.В противном случае вам придется указать, какого пользователя вы хотите использовать, и я, конечно, не могу сказать вам, каким будет хорошее правило для этого для вашей среды.

Также я надеюсь, что вы проверили, что класс WMI CCM_UserAffinity ужеЯ не могу сказать вам, так ли это на том этапе, когда вы хотите запустить этот скрипт.

...