AvoidUsingCmdletAliases

重大度レベル: 警告

形容

このルールは、暗黙のエイリアスシナリオにおけるコマンドレットエイリアスの使用や Get- 接頭辞の省略を検出します。 エイリアスとは、関数、スクリプト、ファイル、実行ファイルなどのコマンドレットやコマンド要素の別名やニックネームのことです。 正式なコマンド名の代わりにエイリアスを使うことはできますが、そうするとコードの可読性や保守性が低下します。

PowerShellは暗黙のエイリアスもサポートしています。 コマンドレット名が見つからない場合、PowerShellはフォールバックとしてコマンドに Get- を追加します。 例えば、 verb 入力は Get-Verbを実行します。

エイリアスはコードベース間で一貫性を生みます。なぜなら、異なる作者が異なるエイリアスを学び、使用しているからです。 エイリアスは、協働環境でコードを読みや理解しにくくする可能性があります。 また、スクリプトの移植性や入手可能性に問題を引き起こすこともあります。

完全なコマンドレット名を使うことでコードの明瞭さが向上し、スクリプトの保守が容易になり、GitHubやVisual Studio Codeなどのコードエディタやプラットフォームでの適切な構文ハイライトが可能になります。 必ず別名の代わりに正式なコマンドレット名を使いましょう。

非準拠

gps | Where-Object {$_.WorkingSet -gt 20000000}

対応

Get-Process | Where-Object {$_.WorkingSet -gt 20000000}

ルールの設定

PSScriptAnalyzerが好みのエイリアスにフラグを立てないように、設定ファイルにエイリアスの許可リストを作成し、そのエイリアスを使うようにPSScriptAnalyzer指示してください。 たとえば、PSScriptAnalyzerのエイリアスである cdにフラグを設定する Set-Location を無効にするには、設定ファイルの内容を次のように設定します。

@{
    'Rules' = @{
        'PSAvoidUsingCmdletAliases' = @{
            'allowlist' = @('cd')
        }
    }
}