Я пытаюсь получить список пользователей из 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
}
Кажется, что проблема возникает, когда пользователь имеет группу управления, а не один пользовательменеджер