基本上,我对正在执行的操作没有问题。我的问题是关于操作"waiting for ..."消息的状态输出。是否有办法抑制该消息?
示例:
PS C:\Users\a.real.person.maybe> Get-Service *fewserviceswithmatchingprefixes* | Where-Object {$_.Name -notmatch 'somethinghere' -and $_.Name -ne 'alsosomethinghere' -and $_.Name -ne 'somethinghereprobably'} | Stop-Service
WARNING: Waiting for service 'thoseservicesabove' to stop...
WARNING: Waiting for service 'anotheroneofthoseservicesabove' to stop...
3条答案
按热度按时间a64a0gku1#
您可以在调用站点将
$WarningActionPreference
变量的值设置为Ignore
或SilentlyContinue
(这两个值都将禁止使用和呈现警告消息):或者,您可以在调用
Stop-Service
时显式使用-WarningAction
公共参数(它只会影响Stop-Service
的特定调用):wsewodh22#
@mathias在评论中一针见血!
一堆东西|停止-服务-警告操作静默继续
m1m5dgzv3#
要补充Mathias' helpful answer:
您可以或者使用
3>
重定向,即**3>$null
来消除警告**:PowerShell的output streams是有编号的(流
1
(成功),2
(错误)对应系统级的stdout和stderr流,与外界通信时),3
指的是 * 警告流 ,可以针对>
,redirection operator;重定向到$null
有效地 * 丢弃 * 目标流的输出(如果有的话)。这适用于任何输出流(
>
隐式地与1>
相同,即以 * success * 输出流为目标),PowerShell甚至提供重定向**>
以重定向 * 所有 * 流。将 * 文件名或路径 * 而不是
$null
(安静地)作为目标会将流输出保存到纯文本文件中,格式与您在终端中看到的格式相同,除了特定于流的前缀(如"WARNING:"的说明。与使用公共
-WarningAction
参数相比,使用类似于3>
的参数有一个优点**:-WarningAction
,而**3>$null
对使用Write-Warning
**的 * 简单 * 函数和脚本也有效。$WarningPreference
* 首选项变量 * 对 * 所有 * PowerShell命令都同样有效。$ErrorActionPreference
首选项变量)* 不 * 适用于 * 外部程序 :流3
和更高的流 * 不适用于 * 外部程序,并且外部程序的 * stderr * 输出在默认情况下(明显地) 不 * 被认为是错误输出(尽管这样的输出可以作为流号2
的目标);* * 要使外部程序的 * stderr * 输出静音,您 * 必须 * 使用2>$null
**-WarningVariable
参数在 * 变量 * 中收集警告的能力;使用3>
重定向最接近此功能的方法是将警告写入 * 文件 *(这需要在"打印"警告之后显示该文件的内容)。3>
这样的流定向重定向应该与等效的-WarningAction SilentlyContinue
参数 * 行为相同 *,并且-除了2>
/-ErrorAction
-同样适用于-*Action Ignore
。-ErrorAction Ignore
-类似于2>$null
/-ErrorAction SilentlyContinue
-抑制错误流 * 输出 ,但是-与后者不同- 另外地 * 防止发生的(非终止)错误 * 被记录在自动$Error
变量 * 中,该变量是迄今为止已经发生的错误的会话范围的集合。-ErrorAction SilentlyContinue
可能会 * 失败 * 记录$Error
,而2>$null
仍然会-请参见this answer的示例。