AvoidUsingCmdletAliases

严重性级别:警告

描述

该规则检测隐式别名场景中 cmdlet 别名的使用和前缀的省略 Get- 。 别名是命令小程序或命令元素的另一种名称或昵称,例如函数、脚本、文件或可执行文件。 虽然你可以用别名代替完整命令名,但这样做会降低代码的可读性和维护性。

PowerShell 也支持隐式别名。 如果找不到 cmdlet 名称,PowerShell 会 Get- 作为备援附加到命令后面。 例如,输入 verb 执行 Get-Verb

别名会导致代码库间的不一致,因为不同作者学习和使用不同的别名。 别名可能使代码在协作环境中难以阅读和理解。 这也可能导致脚本的可移植性和可用性问题。

使用完整的 cmdlet 名称可以提高代码清晰度,使脚本更易维护,并支持在代码编辑器和 GitHub、Visual Studio Code 等平台上进行正确的语法高亮。 一定要用完整的指令包名而不是别名。

非符合性

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

合规的

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

配置规则

为了防止 PSScriptAnalyzer 标记你偏好的别名,可以在设置文件里创建一个允许别名列表,并指向 PSScriptAnalyzer 使用设置文件。 例如,若要禁用标记 PSScriptAnalyzercdSet-Location的别名),请将设置文件内容设置为以下内容。

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