Enable-ADAccount
не возвращает никаких выходных данных по умолчанию, поэтому все выражение конвейера:
Search-ADAccount -AccountDisabled | Where-Object {($_.SamAccountName -eq "$Username")} | Enable-ADAccount
... будет иметь значение ничто - и все это Ничего оценивается как $false
в вашем if
состоянии.
Используйте блок try
/ catch
, чтобы перехватывать ошибки из Enable-ADAccount
, а затем оповещать на основе этого:
try {
Search-ADAccount -AccountDisabled | Where-Object {($_.SamAccountName -eq "$Username")} | Enable-ADAccount -ErrorAction Stop
# We got this far because Enable-ADAccount didn't throw any errors
[System.Windows.MessageBox]::Show("$Username has been enabled.")
}
catch {
[System.Windows.MessageBox]::Show("$Username has not been enabled.")
}
В качестве альтернативы используйте переключатель -PassThru
с Enable-ADAccount
, чтобы он возвратил учетную запись, затем проверьте, что:
$enabledAccount = Search-ADAccount -AccountDisabled | Where-Object {($_.SamAccountName -eq "$Username")} | Enable-ADAccount -PassThru
if($enabledAccount.Enabled){
[System.Windows.MessageBox]::Show("$Username has been enabled.")
}
else {
[System.Windows.MessageBox]::Show("$Username has not been enabled.")
}