我正在尝试将AD中的OU(员工)转储为特定格式
"name" -> "Manager";
我正在调零,但是我碰到了下面的代码
get-aduser -filter * -SearchBase "OU=Staff,DC=whatever,DC=local" | get-aduser -Properties Manager | Select Name,Manager
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"
最佳答案
您可以使用
(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
关于powershell - 使用Powershell为AD中的每个用户检索管理器名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31325725/