2015-07-09 2 views
1

Я пытаюсь сбросить подразделение (сотрудников) в нашей эры в определенном форматеПолучить имя менеджера для каждого пользователя в AD с помощью PowerShell

"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" 
+1

Да, 'manager' свойством является * отличительным именем * объекта пользователя менеджера - получить имя менеджера, вам нужны найти этот объект (привязать к нему), а затем получить его имя –

+0

Кажется логичным, как это сделать? – Crash893

+2

См. Ответ ниже - Матиас избил меня до ответа (и его намного лучше, чем у меня когда-либо было бы :-)) –

ответ

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 
+0

Я обновил ответ с помощью кода, используя только части я понимаю. часть, отмеченная в скобках >>>><<<< - это то, что я не понимаю, не работает. – Crash893

+1

@ Crash893 Вам нужно обернуть вызов 'Get-ADUser' в еще один набор круглых скобок. '' $ ($ user.name) -> $ ((Get-ADUser ($ users.manager)). name) "' Синтаксис '$ (выражение)' в строке вставляет значение выражения в указанное место. – Vesper

+0

@Vesper Его почти там, но я получаю сообщение об ошибке – Crash893

Смежные вопросы