Использование Get-ADPrincipalGroupMembership в качестве задания

Я хочу получить членство в AD Group как работу. Просто используя

Get-ADPrincipalGroupMembership -Identity $objUser.DistinguishedName

приятно возвращает список AD-групп. Однако, когда я пытаюсь это как работа:

$Job = Start-Job {Get-ADPrincipalGroupMembership $objUser.DistinguishedName}
$Job.Name
Wait-Job -Name $Job.Name
Receive-Job -Name $Job.Name

Я получаю ошибку:

Невозможно проверить аргумент параметра "Идентичность". Аргумент нулевой или пустой. Укажите аргумент, который не является пустым или пустым, а затем повторите команду. + CategoryInfo: InvalidData: (:) [Get-ADPrincipalGroupMembership], ParameterBindingValidationExcep
tion + FullyQualifiedErrorId: ParameterArgumentValidationError, Microsoft.ActiveDirectory.Management.Commands.Get ADPrincipalGroupMembership + PSComputerName: localhost Что я делаю не так?

1 ответ

Решение

Задания выполняются в фоновом режиме, а не в текущей области, поэтому Start-Job ничего не знает о ваших переменных, если вы не сообщите им о них.

$DN = $objUser.DistinguishedName
$Job = Start-Job {Get-ADPrincipalGroupMembership $args[0]} -ArgumentList $DN
$Job.Name
Wait-Job -Name $Job.Name
Receive-Job -Name $Job.Name

Объяснение:

Добавьте ваши переменные с -ArgumentList $var1,$var2 параметр затем использовать $args[0] для первого параметра $args[1] на 2-й и так далее.

В вашем случае нужен только один параметр, поэтому используйте -ArgumentList $DN и позвони с $args[0] внутри start-job ScriptBlock

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