UseCompatibleCmdlets

重大度レベル: 警告

形容

このルールは、対象となるPowerShellエディション、バージョン、OSで利用できないコマンドレットを検出します。 このルールは、スクリプト内の各コマンドレットをPSScriptAnalyzerに付属する互換性許容リストと比較します。 これらのファイルは以下の場所にあります: /path/to/PSScriptAnalyzerModule/Settings

各ファイルは以下の命名形式を使用しています:

<psedition>-<psversion>-<os>.json

Where:

  • <psedition>Core または Desktop
  • <psversion> はPowerShellのバージョンです
  • <os>WindowsLinuxLinux-Arm、または MacOS です

スクリプトがWindowsのPowerShell Core 6.1と互換性があるかを確認するには、以下の設定を追加してください:

@{
    'Rules' = @{
        'PSUseCompatibleCmdlets' = @{
            'compatibility'      = @('core-6.1.0-windows')
        }
    }
}

互換性パラメータは、以下のような1つ以上のターゲット識別子のリストを受け入れます。

  • desktop-2.0-windows
  • desktop-3.0-windows
  • desktop-4.0-windows(Windows Server 2012 R2より取得)
  • desktop-5.1.14393.206-windows
  • core-6.1.0-windows(Windows 10、バージョン1803より)
  • core-6.1.0-linux (Ubuntu 18.04 から取得)
  • core-6.1.0-linux-arm (Raspbian から取得)
  • core-6.1.0-macos

パッチ適用されたPowerShellのバージョンは通常同じコマンドレットデータを持つため、このルールは主にメジャーとマイナーのバージョンプロファイルを配布します。

また、 New-CommandDataFile.ps1でカスタムプロフィールを作成することもできます。 生成されたJSONファイルをSettingsモジュールのPSScriptAnalyzerフォルダに入れます。 その後、 compatibilityでファイル名で参照できます。

PowerShell 6.0が終了したため、PSScriptAnalyzer 1.18で core-6.0.2-* ファイルは削除されました。