0

我想获得 AD Group Membership 作为一份工作。只是使用

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

我收到一个错误:

无法验证参数“身份”上的参数。参数为 null 或空。提供一个不为 null 或空的参数,然后重试该命令。+ CategoryInfo : InvalidData: (:) [Get-ADPrincipalGroupMembership], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.Get ADPrincipalGroupMembership + PSComputerName : localhost 我做错了什么?

4

1 回答 1

0

作业在后台运行,而不是在当前范围内,因此 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]用于第二个参数,依此类推。

在您的情况下,只需要一个参数,因此在ScriptBlock内使用-ArgumentList $DN和调用它$args[0]start-job

于 2015-08-26T14:21:04.987 回答