【问题标题】:Using Get-ADPrincipalGroupMembership as a job使用 Get-ADPrincipalGroupMembership 作为工作
【发布时间】:2015-08-26 14:04:57
【问题描述】:

我想获得 AD 组成员身份作为工作。只是使用

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 或空的参数,然后尝试 再次命令。 + CategoryInfo : InvalidData: (:) [Get-ADPrincipalGroupMembership], ParameterBindingValidationExcep
化 + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.Get ADPrincipalGroup 成员 + PSComputerName:本地主机 我做错了什么?

【问题讨论】:

    标签: powershell start-job


    【解决方案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] 到第二个参数,依此类推。

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

    【讨论】:

    • 感谢您的回答。它不仅有效,而且我理解它为什么有效。太好了!
    猜你喜欢
    • 1970-01-01
    • 2021-10-06
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    • 2018-02-06
    • 2014-06-23
    • 2018-11-06
    相关资源
    最近更新 更多