Как удалить пользователя в Active Directory через Powershell? - PullRequest
0 голосов
/ 10 апреля 2020

Я должен удалить пользователей из моей AD через Powershell. Powershell должен спросить меня, кого я хочу удалить, после ввода имени пользователя следует удалить учетную запись. Также, когда Powershell успешно удалил аккаунт или он должен дать мне сообщение.

Я вроде как нуб, но вот мой код:

    function aduser-remove($userremove){
    Remove-ADUser -Identity $delete 
        if ($delete -eq $userremove){
            return $true
        }
        else {
            return $false
        }
}

$delete = Read-host "Which user do you want to delete? (Type in username)." 
aduser-remove $delete

    if ($userremove -eq $true){
        Write-Host $delete "deleted succesfully!" -ForegroundColor Green
    } 
    elseif ($userremove -eq $false){
        Write-Host "An error occured by deleting" $delete -ForegroundColor Red
    }
    else {
        Write-Host $delete "does not exist." -ForegroundColor DarkGray
    }

В результате Powershell спрашивает, хочу ли я удалить учетную запись, и она работает. Но Powershell продолжает давать мне сообщение else вместо сообщения if. Удаление аккаунта прошло успешно.

Я понятия не имею, что делать сейчас, или если я что-то упускаю (держу пари, что иначе это сработает).

Надеюсь, вы, ребята, сможете мне помочь!

Ответы [ 2 ]

0 голосов
/ 10 апреля 2020
0 голосов
/ 10 апреля 2020

Как прокомментировано, ваш код использует переменные в местах, где они не существуют.

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

Надеюсь, это поможет

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