重大度レベル: 警告
説明
コマンドレットで属性が宣言されている SupportsShouldProcess 場合は、呼び出す ShouldProcess必要もあります。 違反とは、属性を宣言SupportsShouldProcessするが、呼び出しを行わないか、呼び出ShouldProcessしをShouldProcess行わないが宣言SupportsShouldProcessしない関数です。
詳細については、次の記事を参照してください。
- about_Functions_Advanced_Methods
- about_Functions_CmdletBindingAttribute
- ShouldProcess について知りたかったことのすべて
どのように
この規則違反を修正するには、コマンドレットが属性を宣言するときにメソッドをSupportsShouldProcess呼び出ShouldProcessしてください。 または、呼び出すときShouldProcessに属性引数を追加SupportsShouldProcessしてください。
例
間違って
function Set-File
{
[CmdletBinding(SupportsShouldProcess=$true)]
Param
(
# Path to file
[Parameter(Mandatory=$true)]
$Path
)
'String' | Out-File -FilePath $Path
}
正解です。
function Set-File
{
[CmdletBinding(SupportsShouldProcess=$true)]
Param
(
# Path to file
[Parameter(Mandatory=$true)]
$Path,
[Parameter(Mandatory=$true)]
[string]$Content
)
if ($PSCmdlet.ShouldProcess($Path, ("Setting content to '{0}'" -f $Content)))
{
$Content | Out-File -FilePath $Path
}
else
{
# Code that should be processed if doing a WhatIf operation
# Must NOT change anything outside of the function / script
}
}