-ErrorAction с Get-ADComputer не скрывает ошибки - PullRequest
2 голосов
/ 03 июня 2019

Я только начинаю погружаться в PowerShell с AD, поэтому извиняюсь, если вопрос кажется очевидным.

Я пытаюсь проверить, находится ли какое-либо из устройств, представленных в списке, в AD. До сих пор я использовал код из: Powershell - убедитесь, что объект существует в AD

Работает просто отлично, но "-ErrorAction SilentlyContinue" фактически не подавляет сообщения об ошибках. Я получаю ниже:


Get-ADComputer: не удается найти объект с идентификатором: 'test' в:
"DC = тест, DC = дом.
В C: \ Users \ testaccount \ Desktop \ test.ps1: 171
символ: 19
+ if (@ (Get-ADComputer $ target -ErrorAction SilentlyContinue) .Count)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: ObjectNotFound: (тест: ADComputer) [Get-ADComputer], ADIdentityNotFoundException
+ FullyQualifiedErrorId: ActiveDirectoryCmdlet: Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException, Microsoft.ActiveDirectory.Management.Commands.GetADComputer


Код, который я использую, выглядит следующим образом:

foreach ($target in $devicelist)
{
    if (@(Get-ADComputer $target -ErrorAction SilentlyContinue).Count)
    {
        $existingdevices += $target
    }
    else
    {
        #display error notification
    }
}

То, что я ищу, это подавление сообщения об ошибке, чтобы оно больше не отображалось в консоли, - чтобы скрипт фактически продолжал молча при ошибке.

Любая помощь будет оценена по достоинству!

1 Ответ

3 голосов
/ 03 июня 2019

Итак, давайте поговорим о том, что происходит.

Существует 2 типа ошибок Завершение и Не завершается .

Завершение останавливает выполнение команды и вызывает исключение.Не завершающий возвращает сообщение об ошибке записи.

-ErrorAction заботится о неразрывных ошибках

Try{}Catch{} заботится о завершающих ошибках.

Вваш случай

foreach ($target in $devicelist)
{
    try{
        if (@(Get-ADComputer $target -ErrorAction SilentlyContinue).Count)
        {
            $existingdevices += $target
        }
        else
        {
            #display non-terminating error notification
        }
    }catch{
        #display Terminating error notification
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...