次の方法で共有


ShouldProcess

重大度レベル: 警告

説明

コマンドレットで属性が宣言されている SupportsShouldProcess 場合は、呼び出す ShouldProcess必要もあります。 違反とは、属性を宣言SupportsShouldProcessするが、呼び出しを行わないか、呼び出ShouldProcessしをShouldProcess行わないが宣言SupportsShouldProcessしない関数です。

詳細については、次の記事を参照してください。

どのように

この規則違反を修正するには、コマンドレットが属性を宣言するときにメソッドを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
    }
}