Powershell Get-AdUser Manager получает нулевое значение для пользователей, у которых есть менеджеры - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь получить список пользователей из Active Directory, записанный в файл xml, для отправки стороннему поставщику для интеграции.

У меня есть следующая функция в powershell, она берет информацию о пользователе и создает элемент

function Write-ManagerElement() {
<#
.SYNOPSIS
Builds the Manager XML Element 
.DESCRIPTION
Builds the Manager XML Element
.EXAMPLE
Write-ManagerElement -user 'jdoe'
.PARAMETER $writer - xml writer
.PARAMETER $server - AD Domain Controller
.PARAMETER $user - Passed user
#>
    param(
        [Parameter(Mandatory=$false)][System.Xml.XmlTextWriter]$writer = $xmlWriter,
        [Parameter(Mandatory=$false)][string]$server = $env:DomainControllerServer,
        [Parameter(Mandatory=$true)][System.Object]$user
    )

    $writer.WriteStartElement('manager')
    if (![string]::IsNullOrWhiteSpace($user.Manager)) {
        $manager = Get-AdUser -Identity $user.Manager -Server $server -Credential $credential -Properties DistinguishedName, objectGUID
        $writer.WriteAttributeString('uid', $manager.ObjectGUID.ToString())
        $writer.WriteAttributeString('dn', $manager.DistinguishedName)
    } else {
        $writer.WriteAttributeString('uid', '')
        $writer.WriteAttributeString('dn', '')
    }
    $writer.WriteEndElement()
}

Я также успешно использовал следующий бит на месте, и он также работал

$manager = (Get-ADUser (Get-ADUser $user -Properties manager -Server $env:DomainControllerServer -Credential $credential).manager -Server

Оба метода работают нормально в тестовой среде (которая никоим образом не отражает наш Prod), но для 76 пользователей это говорит, что $ user.Manager не равен нулю, но не может вернуть значение, похоже, возвращает ноль,Кто-нибудь есть какие-либо идеи о том, что мне не хватает?

Так что после использования следующего

foreach($user in $users) {
    "Processing $($user)"
    $usr = Get-ADUser -Identity $user -Server $env:DomainControllerServer -Credential $credential -Properties *
    $manager = Get-ADUser -Identity $usr.Manager -Server $env:DomainControllerServer -Credential $credential -Properties *
    "$($user) -> $($usr.DisplayName) -> $($manager.DisplayName)"
    $usr = $null
    $manager = $null
}

Кажется, что проблема возникает, когда пользователь имеет группу управления, а не один пользовательменеджер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...