将变量从$ _. SamAccountName传递给管道命令

时间:2016-04-04 13:23:08

标签: powershell

有人能告诉我如何获得如下例所示的用户名,身份参考和访问控制类型吗?

Username         IdentityRefrerance        AccessControlType
fred             BuiltIn\Account Operator  Allow

我创建了以下PS脚本,但我无法获取用户名。

[groovy:message.getExceptionPayload().getRootException().getMessage()]

2 个答案:

答案 0 :(得分:1)

无需循环两次或多次调用Get-ADUser。只需对第一个Get-Acl返回的对象运行Get-ADUser,然后使用calculated property添加用户名:

Get-ADUser -Filter * | ForEach-Object {
  $username = $_.SamAccountName
  (Get-Acl $_.DistinguishedName).Access | 
    Where-Object {$_.IdentityReference -eq "BUILTIN\Account Operators"} |
    Select-Object @{n='Username';e={$username}}, IdentityReference,
                  AccessControlType
}

答案 1 :(得分:0)

所以,乍一看这有点棘手。但答案实际上很简单!

您想要运行Get-ADUser命令的SamAccountName属性。由于我们使用ForEach($user in $users)逐步完成了每个结果,因此您可以使用$user.SamAccountName随时引用该属性。

我认为这可以捕捉到您正在尝试做的事情:

foreach ($User in $Users) {
    (Get-ACL (Get-ADUser -Identity $User).distinguishedname).access | 
    where-Object {$_.IdentityReference -eq "BUILTIN\Account Operators"} return true |
    select $user.SamAccountName, identityreference, accesscontroltype
}