严重性级别:警告
默认状态:始终启用
描述
该规则检测到针对你目标的PowerShell版本、版本和操作系统无法提供的命令小子。 该规则会将脚本中的每个命令与PSScriptAnalyzer自带的兼容性允许列表进行比较。 这些文件位于以下位置: /path/to/PSScriptAnalyzerModule/Settings。
每个文件使用以下命名格式:
<psedition>-<psversion>-<os>.json
Where:
-
<psedition>是Core或Desktop -
<psversion>是PowerShell版本 -
<os>为Windows,Linux,Linux-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 中的“抑制规则”部分。