使用powershell检索AD中每个用户的管理器名称

时间:2015-07-09 18:43:00

标签: powershell active-directory

我正在尝试将AD中的OU(Staff)转储为特定格式

"name" -> "Manager"; 

我正在进入,但我正在使用以下代码进入墙壁

get-aduser -filter * -SearchBase "OU=Staff,DC=whatever,DC=local" |  get-aduser -Properties Manager | Select Name,Manager  

经理的输出返回为:

CN=Sharon Doe,OU=Staff,DC=whatever,DC=local 

另外,我不确定如何在引号中包装文本并在名称和管理器之间插入箭头

谢谢你能指出我正确的方向

到目前为止,这是我的sudo工作代码

Import-Module ActiveDirectory  
 $users = $null
 $i = $null  
 $users = Get-ADUser -SearchBase "ou=Staff,dc=whatever,dc=local" -filter * `  -property description  
 ForEach($user in $users)  
  {  

      $user.name + >>>Get-ADUser($users.manager).name**<<<

      $i++  

 }  
"$i users"

1 个答案:

答案 0 :(得分:4)

您可以使用

(Get-ADUser "CN=Sharon Doe,OU=Staff,DC=whatever,DC=local").DisplayName

获取经理的用户对象并抓取DisplayName而不是DN。

如果您对使用calculated properties(见下文)感到自信,可以在foreach循环中使用它:

$Users = Get-ADUser -filter * -SearchBase "OU=Staff,DC=whatever,DC=local" -Properties Manager 

foreach($User in $Users){
    $Manager = Get-ADUser $User.Manager -Properties DisplayName
    $ManagerName = $Manager.DisplaýName

    "$($User.Name) -> $ManagerName"
}

使用Select-Object时,您也可以在计算属性中使用它:

$Users = Get-ADUser -filter * -SearchBase "OU=Staff,DC=whatever,DC=local" -Properties Manager 
$Users | Select Name,@{label="Manager";expression={(Get-ADUser $_.Manager -Properties DisplayName).DisplayName}}

如果Select语句太难以理解,您可以随时创建一个包含属性的splatting表:

$NameManager = @{
  "Property" = @(
    "Name"
    @{
      Label = "Manager"
      Expression = {
        Get-ADUser $_.Manager -Properties DisplayName |Select -Expand DisplayName
      }
    }
  )
}

$Users | Select-Object @NameManager