обрабатывать ADIdentityNotFoundException без остановки программы - PullRequest
0 голосов
/ 25 июня 2019

Я должен выполнить цикл для каждого объекта во входном файле, выполняя Get-ADUser для каждого объекта, и я хочу обработать ошибку ADIdentityNotFoundException без остановки цикла.Есть ли лучший способ, которым я могу сделать это (упрощено ради примера):

Import-Csv $input | Foreach-Object {
    $manager = "BLANK"
    if ($user = Get-ADUser $_."samaccountname" -properties * ) {

        # I don't think I need this in an IF{} since the line below won't work
        # so $manager will be equal to the last value set, "BLANK", but
        # this makes it easier to understand what I want to happen

        $manager = $user."manager"

        # I need more properties (thus -properties *) but again just an example
    }

}

По сути, если поиск Get-ADUser успешен, установите $manager = $user."manager"

Если этоне удалось, не останавливайте цикл, не копируйте значение предыдущего пользователя, введите $manager = "BLANK" (или что-либо еще).Проблема, с которой я столкнулся с решениями try / catch, заключается в том, что ADIdentityNotFoundException не запускает перехват, если я не добавлю -ErrorAction Stop, что приведет к нежелательному результату завершения программы.

1 Ответ

0 голосов
/ 25 июня 2019

Я не уверен, почему ваша программа заканчивается.Использование приведенного ниже примера кода проходит по всем пользователям в массиве.Я специально ввел неправильное имя пользователя во второе значение массива (позиция [1]):

$users = "username1", "username2", "username3" #username2 is purposely incorrect
foreach ($i in $users){
    try{
        $user = Get-ADUser -Identity $i -Properties * -ErrorAction Stop
        Write-Host "Found"
    }catch{
        Write-Host "Not found"
    }
}

мой вывод

найдено

нетнайдено

найдено

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