UseCompatibleCmdlet

严重性级别:警告

默认状态:始终启用

描述

该规则检测到针对你目标的PowerShell版本、版本和操作系统无法提供的命令小子。 该规则会将脚本中的每个命令与PSScriptAnalyzer自带的兼容性允许列表进行比较。 这些文件位于以下位置: /path/to/PSScriptAnalyzerModule/Settings

每个文件使用以下命名格式:

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

Where:

  • <psedition>CoreDesktop
  • <psversion> 是PowerShell版本
  • <os>WindowsLinuxLinux-Arm,或 MacOS

配置规则

为了检查你的脚本是否兼容 Windows 上的 PowerShell Core 6.1,请添加以下配置:

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

兼容性参数接受一个或多个目标标识符的列表,例如:

  • 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版本通常包含相同的cmdlet数据,因此该规则主要发布主版本和次要版本配置文件。

你也可以用 New-CommandDataFile.ps1创建自定义配置文件。 将生成的JSON文件放入 Settings 模块的 PSScriptAnalyzer 文件夹中。 然后你可以在 下通过名称 compatibility引用该文件。

core-6.0.2-*由于PowerShell 6.0已接近生命周期终结,这些文件在PSScriptAnalyzer 1.18中被移除。

虽然规则可配置,但规则始终是启用的。 请采用以下方法之一以避免使用此规则:

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