Powershell 2: невозможно подавить предупреждающее сообщение - PullRequest
5 голосов
/ 12 сентября 2011

Я выполняю вызов командлета 'set-distributiongroup' в powershell 2. Я просто устанавливаю значение параметра 'hiddenFromAddressListsEnabled' в предварительно определенное логическое значение.

Однако, независимо от того, чтоЯ пытаюсь, он отображает предупреждающее сообщение, если логическое назначение на самом деле не меняет текущее значение hiddenFromAddressListsEnabled.

Вот основная команда, которую я вызываю:

set-DistributionGroup -identity TestGroup                  `
                      -hiddenFromAddressListsEnabled=$true

ДавайтеСемантически определите то, что у меня есть выше, как «команду».

Теперь я попытался добавить несколько разных вариантов, все с правильным продолжением строки и синтаксисом.Вот эти варианты:

command > $null
command 2> $null
command -ErrorAction:silentlycontinue
command -ErrorVariable $throwAway
command -WarningAction:silentlycontinue
command -WarningVariable $throwAway
$var = command

Независимо от различных комбинаций одного или нескольких из вышеперечисленных, я по-прежнему получаю желтый ВНИМАНИЕ: сообщение выводится на экран.В частности, это:

WARNING: The command completed successfully but no settings of
'<xxxxxx>/Users/TestGroup' have been modified.

Какие-либо предложения по ключевой концепции я не понимаю?Я хочу, чтобы команда не производила этот вывод, и я хочу, чтобы он продолжал молча, если это произойдет.

Спасибо !!

Ответы [ 10 ]

10 голосов
/ 25 сентября 2012

Я пытался подавить предупреждающие сообщения при остановке службы:

WARNING: Waiting for service 'Service Description' to finish stopping...

У меня сработало следующее:

Stop-Service $svc.Name -WarningAction SilentlyContinue
4 голосов
/ 13 сентября 2011

Если это просто предупреждение, которое вызывает проблему, почему бы вам не установить в своем скрипте переменную $WarningPreference?

PS C:\> $WarningPreference='silentlycontinue'
PS C:\> Write-Warning "coucou"
PS C:\> $WarningPreference='continue'
PS C:\> Write-Warning "coucou"
AVERTISSEMENT : coucou
2 голосов
/ 10 сентября 2012

Ваша команда неверна. Именно поэтому вы получаете желтое сообщение об ошибке. Команда должна выглядеть так:

Set-DistributionGroup -Identity TestGroup -HiddenFromAddressListsEnabled $true

Или

Set-Distributionaliste -Identity TestGroup -HiddenFromAddressListsEnabled:$true

Но не

Set-DistributionGroup -Identity TestGroup -HiddenFromAddressListsEnabled=$true
2 голосов
/ 12 сентября 2011

Возможно, вы столкнулись с этой ошибкой: http://connect.microsoft.com/PowerShell/feedback/details/541500/warning-verbose-and-debug-streams-do-not-respect-action-preferences-the-way-they-should

В любом случае, ваша команда должна выглядеть так:

Set-DistributionGroup -Identity TestGroup -HiddenFromAddressListsEnabled $true
1 голос
/ 21 апреля 2015

только что столкнулся с этой темой при поиске по проблеме, в моем случае PowerShell v2, только после установки

$WarningPreference = "SilentlyContinue"

Write-Warning "бла" - мне ничего не возвращалось ... параметр команды не сделалС моей стороны тоже многое изменилось.

1 голос
/ 16 июня 2014

У меня возникла та же проблема с консолью управления Exchange в 2010 году. Проблема в том, что EMC работает на PowerShell 2.0, в котором, как указывалось ранее, есть некоторые ошибки, связанные с настройками предупреждений.

Я обнаружил, что нахальный обходной путьзапустите мой сценарий в стандартной оболочке PowerShell 4.0, а затем импортируйте командлеты EMC и запустите новый сеанс удаленного PS, как показано ниже ...

. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto

... затем -WarningAction: SilentlyContinue вдруг начинает себя вести.

0 голосов
/ 05 февраля 2014

Если вы вызываете PowerShell версии 2.0, вы должны использовать «-WarningAction silentlyContinue». У меня возникла та же проблема, но в сценарии, если я вызываю, например, «C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -versión 2.0», тогда вы можете использовать этот параметр. Я пытался выполнить запланированное задание и использовать скрипт ps1.

0 голосов
/ 02 декабря 2013

Я столкнулся с той же проблемой, похоже, что следующая команда выполняет (PS 3.0):

Stop-Service<or whatever command> $svc.Name -WarningPreference SilentlyContinue

Не знаю точно, в чем разница с -WarningAction.

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

0 голосов
/ 01 августа 2013

Попробуйте что-то подобное:

PS C:\> {command} | Out-Null

Для получения дополнительной информации: Technet: Out-Null

0 голосов
/ 05 октября 2011

Вы должны попробовать

Set-DistributionGroup -Identity TestGroup -HiddenFromAddressListsEnabled $true -WarningAction silentlyContinue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...