Я пытаюсь проверить, есть ли у пользователя менеджер в AD, если он пуст / пуст, я предоставляю значение, на которое его необходимо изменить.В настоящее время у меня есть рабочий код, если значение не равно нулю и отличается, но я получаю сообщение об ошибке, если оно равно нулю.
Я пробовал несколько вариантов поиска, но всегда возвращаюсь к ошибке, когда значениеявляется нулевым.
Import-Module ActiveDirectory
if ((Get-PSSnapin -Name Quest.ActiveRoles.ADManagement -ErrorAction SilentlyContinue) -eq $null) {
Add-PSSnapin Quest.ActiveRoles.ADManagement
}
Connect-QADService foo.domain.com
#Specify User, then manager value to check against
Write-Host "What is the user's name?"
$User = Read-Host
Write-Host "Who is the manager we are checking against?"
$manager = Read-Host
#Check if Manager Value is null
if (-not ($ADemanager = (Get-ADUser (Get-ADUser $OBUID -Properties manager).manager).SamAccountName)) {
Write-Host "User's Manager value is EMPTY or NULL in AD."
$ADemanager = "Null Value"
Write-Host " NOTE: Changing the value from $ADemanager to $OBemanager per HR Records."
Get-ADUser $OBUID |
Set-ADUser -Manager $OBemanager -PassThru |
Get-ADUser -Properties Manager |
Select Name, Manager
} else {
Write-Host "User's Manager Name not EMPTY in AD."
Write-Host "Checking to see if manager's match in AD."
if ($ADemanager -eq $OBemanager) {
#Manager from AD matches manager listed on offboarding form
Write-Host "The manager matches AD Value."
} else {
Write-Host " NOTE: Manager from Offboarding form does not match manager listed in AD." -ForegroundColor Yellow
Write-Host " NOTE: Changing the value from $ADemanager to $OBemanager per HR Records."
#Change Manager in AD (Make sure right variables used below)
Get-ADUser $OBUID |
Set-ADUser -Manager $OBemanager -PassThru |
Get-ADUser -Properties Manager |
Select Name, Manager
}
}