Powershell 2:无法抑制警告消息

时间:2011-09-12 19:31:20

标签: powershell warnings

我正在对PowerShell 2中的'set-distributiongroup'进行cmdlet调用。我只是将参数'hiddenFromAddressListsEnabled'的值设置为预定义的布尔值。

但是,无论我尝试什么,如果布尔赋值实际上没有改变'hiddenFromAddressListsEnabled'的当前值,它会显示一条警告消息。

这是我正在调用的主要命令:

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

让我们在语义上将我上面的内容定义为'command'。

现在,我尝试添加几种不同的变体,所有变种都具有正确的行继续和语法。以下是这些变体:

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 个答案:

答案 0 :(得分:10)

我一直试图在停止服务时取消警告信息:

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

以下对我有用:

Stop-Service $svc.Name -WarningAction SilentlyContinue

答案 1 :(得分:4)

如果这只是一个导致问题的警告,为什么不在脚本中设置$WarningPreference变量?

PS C:\> $WarningPreference='silentlycontinue'
PS C:\> Write-Warning "coucou"
PS C:\> $WarningPreference='continue'
PS C:\> Write-Warning "coucou"
AVERTISSEMENT : coucou

答案 2 :(得分:2)

您可能遇到此错误: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

答案 3 :(得分:2)

你的命令错了。这就是为什么你收到黄色错误信息的原因。该命令应如下所示:

Set-DistributionGroup -Identity TestGroup -HiddenFromAddressListsEnabled $true

或者

Set-Distributionaliste -Identity TestGroup -HiddenFromAddressListsEnabled:$true

但不是

Set-DistributionGroup -Identity TestGroup -HiddenFromAddressListsEnabled=$true

答案 4 :(得分:1)

我在2010年遇到了与Exchange管理控制台相同的问题。问题是EMC在PowerShell 2.0上运行,如前所述,它有一些警告偏好方面的错误。

我发现一个厚颜无耻的解决方法是在一个vanilla PowerShell 4.0 shell中运行我的脚本,然后导入EMC cmdlet并启动一个新的远程PS会话......

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

...然后, -WarningAction:SilentlyContinue 突然开始表现自己。

答案 5 :(得分:1)

在搜索问题时突然提出这个话题, 我的案例PowerShell v2,仅在设置

之后
$WarningPreference = "SilentlyContinue"

写警告“等等” - 没有回复我...命令上的参数在我的结尾也没有太大变化。

答案 6 :(得分:0)

你应该试试

Set-DistributionGroup -Identity TestGroup -HiddenFromAddressListsEnabled $true -WarningAction silentlyContinue

答案 7 :(得分:0)

我遇到了同样的问题,以下命令似乎完成了这项工作(PS 3.0):

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

不过确切地知道它与-WarningAction有什么区别。

希望这有帮助!

答案 8 :(得分:0)

如果你调用powershellversión2.0,你应该使用“-WarningAction silentntlyContinue”。我遇到了同样的问题,但在脚本中,如果我调用,例如“C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe-versión2.0”,则可以使用此参数。我正在尝试计划任务并使用ps1脚本。

答案 9 :(得分:-1)

尝试类似的东西:

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

更多信息:Technet: Out-Null