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

Cra*_*893 4 powershell active-directory

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

"name" -> "Manager"; 
Run Code Online (Sandbox Code Playgroud)

我正在专注,但我用下面的代码碰壁了

get-aduser -filter * -SearchBase "OU=Staff,DC=whatever,DC=local" |  get-aduser -Properties Manager | Select Name,Manager  
Run Code Online (Sandbox Code Playgroud)

经理的输出返回为:

CN=Sharon Doe,OU=Staff,DC=whatever,DC=local 
Run Code Online (Sandbox Code Playgroud)

我也不确定如何将文本用引号括起来并在名称和经理之间插入箭头

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

到目前为止,这是我的 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"
Run Code Online (Sandbox Code Playgroud)

Mat*_*sen 11

您可以使用

\n\n
(Get-ADUser "CN=Sharon Doe,OU=Staff,DC=whatever,DC=local").DisplayName\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

如果您对使用计算属性没有信心(见下文),您可以在foreach循环中使用它:

\n\n
$Users = Get-ADUser -filter * -SearchBase "OU=Staff,DC=whatever,DC=local" -Properties Manager \n\nforeach($User in $Users){\n    $Manager = Get-ADUser $User.Manager -Properties DisplayName\n    $ManagerName = $Manager.Displa\xc3\xbdName\n\n    "$($User.Name) -> $ManagerName"\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n
\n\n

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

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

如果该Select声明变得太难以阅读,您可以随时进行泼溅以下属性

\n\n
$NameManager = @{\n  "Property" = @(\n    "Name"\n    @{\n      Label = "Manager"\n      Expression = {\n        Get-ADUser $_.Manager -Properties DisplayName |Select -Expand DisplayName\n      }\n    }\n  )\n}\n\n$Users | Select-Object @NameManager\n
Run Code Online (Sandbox Code Playgroud)\n