严重性级别:警告
默认状态:始终启用
描述
该规则检测不支持 ShouldProcess状态变化动词的函数。 动词改变系统状态的函数应支持 ShouldProcess 为用户提供在执行前确认或预览变更的能力。 要启用此功能,在属性中SupportsShouldProcess将参数设置为 $true 。CmdletBinding
该 SupportsShouldProcess 参数会自动将 确认 和 WhatIf 参数添加到你的函数中:
- Confirm 参数会提示用户在命令运行前确认该命令,然后才会在管道中的每个对象上运行。
- WhatIf 参数显示命令在不实际执行命令的情况下会做出的更改。
应支持 ShouldProcess的谓词:
NewSetRemoveStartStopRestartResetUpdate
例
非符合性
function Set-ServiceObject
{
[CmdletBinding()]
param
(
[string]
$Parameter1
)
...
}
合规的
function Set-ServiceObject
{
[CmdletBinding(SupportsShouldProcess = $true)]
param
(
[string]
$Parameter1
)
...
}
配置规则
这个规则始终是启用的,不能配置。 请采用以下方法之一以避免使用此规则:
- 创建一个自定义规则配置文件,只包含你想要的规则,或者排除你不想要的规则。
- 在代码中添加相应的规则抑制属性,以抑制特定代码块的规则。 更多信息请参见使用 PSScriptAnalyzer 中的“抑制规则”部分。