UseShouldProcessForStateChangingFunctions

严重性级别:警告

默认状态:始终启用

描述

该规则检测不支持 ShouldProcess状态变化动词的函数。 动词改变系统状态的函数应支持 ShouldProcess 为用户提供在执行前确认或预览变更的能力。 要启用此功能,在属性中SupportsShouldProcess将参数设置为 $trueCmdletBinding

SupportsShouldProcess 参数会自动将 确认WhatIf 参数添加到你的函数中:

  • Confirm 参数会提示用户在命令运行前确认该命令,然后才会在管道中的每个对象上运行。
  • WhatIf 参数显示命令在不实际执行命令的情况下会做出的更改。

应支持 ShouldProcess的谓词:

  • New
  • Set
  • Remove
  • Start
  • Stop
  • Restart
  • Reset
  • Update

非符合性

function Set-ServiceObject
{
    [CmdletBinding()]
    param
    (
        [string]
        $Parameter1
    )
    ...
}

合规的

function Set-ServiceObject
{
    [CmdletBinding(SupportsShouldProcess = $true)]
    param
    (
        [string]
        $Parameter1
    )
    ...
}

配置规则

这个规则始终是启用的,不能配置。 请采用以下方法之一以避免使用此规则:

  • 创建一个自定义规则配置文件,只包含你想要的规则,或者排除你不想要的规则。
  • 在代码中添加相应的规则抑制属性,以抑制特定代码块的规则。 更多信息请参见使用 PSScriptAnalyzer 中的“抑制规则”部分。

另见