Как прокомментировано, ваш код использует переменные в местах, где они не существуют.
Кроме того, я бы рекомендовал сначала найти пользователя, а если вы это сделаете, попробуйте удалить его внутри блока try/catch
. , так как Remove-ADUser
не создает вывод.
Ниже переписать ваш код. Обратите внимание, что я изменил название функции в соответствии с соглашением об именах Verb-Noun
в PowerShell.
function Remove-User ([string]$userremove) {
# test if we can find a user with that SamAccountName
$user = Get-ADUser -Filter "SamAccountName -eq '$userremove'" -ErrorAction SilentlyContinue
if ($user) {
try {
$user | Remove-ADUser -ErrorAction Stop -WhatIf
return $true
}
catch {
return $false
}
}
# if we get here, the user does not exist; returns $null
}
$delete = Read-host "Which user do you want to delete? (Type in username)."
# call your function and capture the result
$result = Remove-User $delete
if ($result -eq $true){
Write-Host "User $delete deleted succesfully!" -ForegroundColor Green
}
elseif ($result -eq $false){
Write-Host "An error occured while deleting user $delete" -ForegroundColor Red
}
else {
Write-Host "$delete does not exist." -ForegroundColor DarkGray
}
Обратите внимание, что я вставил переключатель -WhatIf
. Этот переключатель гарантирует, что вы получите только сообщение о том, что произойдет . Ни один пользователь на самом деле не удален. Как только вы убедитесь, что код делает то, что вам нужно, удалите переключатель -WhatIf
.
Надеюсь, это поможет