如何在 Visual Studio Code 中的 PowerShell 扩展中禁用 PSScriptAnalyzer 的 PSAvoidUsingCmdletAliases

如何在 Visual Studio Code 中的 PowerShell 扩展中禁用 PSScriptAnalyzer 的 PSAvoidUsingCmdletAliases

我在用着Visual Studio 代码编写我的 PowerShell 脚本。

我已经安装了ms-vscode.powershell适用于 Visual Studio Code 的 PowerShell 扩展。

每当我在脚本中使用别名时,它PSScriptAnalyzer都会告诉我使用完整的 CmdLet 名称。这有点烦人,因为它还会用绿色曲线标记所有别名。

我怎样才能禁用此功能?

查看问题的屏幕截图

答案1

有三种方法可以做到这一点。

选项 1 - 使用搜索功能

  1. 在 Visual Studio Code 中按 F1 以显示搜索栏
  2. 写下>PowerShell: Select PS然后选择PowerShell: Select PSScriptAnalyzer Rules
  3. 删除勾选PSAvoidUsingCmdletAliases
  4. 点击Confirm

图片:

在此处输入图片描述

选项 2 - 完全禁用 ScriptAnalysis

  1. 单击 Visual Studio Code 左下角的齿轮图标
  2. 点击设置
  3. 点击{}右上角的符号
  4. "powershell.scriptAnalysis.enable": false在右侧添加到您的用户设置(见下面的屏幕截图)。
  5. 点击保存您的用户设置CTRL + S

截屏:

在此处输入图片描述

您的脚本分析器现已禁用,并且不会再抱怨别名。

选项 3 - 创建设置文件并仅禁用别名信息

  1. 在文件系统上创建一个 .psd1 文件。将下面的模板复制到此文件中并保存。
  2. 按照选项 2 第 1 点至第 3 点所述,转到 VSCode 中的 UserSettings。
  3. 添加"powershell.scriptAnalysis.settingsPath": "C:\\foo\\bar\\FileName.psd1"并保存

这是它的一张图片:

在此处输入图片描述

模板(取自https://github.com/PowerShell/vscode-powershell/blob/main/examples/PSScriptAnalyzerSettings.psd1):

    @{
        # Only diagnostic records of the specified severity will be generated.
        # Uncomment the following line if you only want Errors and Warnings but
        # not Information diagnostic records.
        # Severity = @('Error','Warning')
    
        # Analyze **only** the following rules. Use IncludeRules when you want
        # to invoke only a small subset of the defualt rules.
<#
        IncludeRules = @('PSAvoidDefaultValueSwitchParameter',
                         'PSMisleadingBacktick',
                         'PSMissingModuleManifestField',
                         'PSReservedCmdletChar',
                         'PSReservedParams',
                         'PSShouldProcess',
                         'PSUseApprovedVerbs',
                         'PSUseDeclaredVarsMoreThanAssigments')
#>    
        # Do not analyze the following rules. Use ExcludeRules when you have
        # commented out the IncludeRules settings above and want to include all
        # the default rules except for those you exclude below.
        # Note: if a rule is in both IncludeRules and ExcludeRules, the rule
        # will be excluded.
        ExcludeRules = @('PSAvoidUsingCmdletAliases','PSAvoidUsingWriteHost')
    }

相关内容