在AD的powershell使用检索经理姓名为每个用户(Retrieve Manager name

2019-10-23 18:38发布

我想在我们的AD倾倒的OU(工作人员),以特定的格式

"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 

另外,我不知道该如何用引号括文字和插入的名字和经理之间的箭头

感谢如果你能指出我在正确的方向

这是我的工作须藤代码到目前为止

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"

Answer 1:

您可以使用

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

来获取管理员的用户对象,并抓住DisplayName而不是DN。

如果你不觉得有信心与工作计算性能 (见下文),你可以使用它里面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语句过于不可读的,你总是可以做出泼洒与性能表:

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

$Users | Select-Object @NameManager


文章来源: Retrieve Manager name for each user in AD using powershell