如何验证powershell条件语法



PowerShell中是否有条件语句的语法检查器?此代码将跳过条件

if ($templList -ne $null -and $templList.items.Length > 0) {
$templID=$templList.items[0].id
write-host $templList.items
}

因为'-gt'已被'>'取代。

严格来说,您正在寻找语义检查器,前提是您的代码在语法上是正确的

这里的问题是,虽然代码在形式上是正确的,但它并没有按照的意图去做。

PSScriptAnalyzer(PSSA(是PowerShell的linter,它集成到用于Visual Studio代码的PowerShell扩展中。

它会发现你的问题,发出以下信息:

您的意思是使用重定向运算符'>'吗
PowerShell中的比较运算符为"-gt"(大于(或"-ge"(大于或等于(。


在Visual Studio代码中使用:

  • 安装PowerShell扩展。

  • 安装后,打开脚本进行编辑,您会看到> 0部分带下划线,将鼠标悬停在它上面会显示作为工具提示的消息。

  • 您可以在Problems视图中看到当前文件的所有消息(Ctrl-Shift-M,或者通过菜单View > Problems(,顺便说一句,它将向您显示PSSA在代码段中发现了其他潜在问题。

  • 要配置要应用的规则(要警告哪些潜在问题(,请从命令选项板中使用>PowerShell: Select PSScriptAnalyzer Rules

    • 规则名称,如PSAvoidGlobalVars,大多是不言自明的;规则文档描述了它们(没有PS前缀(;还有一个最佳实践主题。

    • 重要

      • 选中/取消选中(或按Enter(感兴趣的规则后,请确保按顶部Confirm菜单项上的Enter,否则您的更改将不会生效。

      • 截至v2019.11.0,这些选择没有持久化(仅在当前会话中记住(-请参阅GitHub发布的

请注意,PSSA还提供PowerShell代码的自动(重新(格式化(Alt-Shift-F或通过命令板>Format Document(。


独立使用:

  • 从PowerShell库安装PSScriptAnalyzer模块;例如:

    • Install-Module -Scope CurrentUser PSScriptAnalyzer

    • 该模块附带以下cmdlet:

      • Invoke-ScriptAnalyzer。。。lints脚本文件
      • Invoke-Formatter。。。将传递的代码重新格式化为字符串
      • Get-ScriptAnalyzerRule。。。列出了标准和可选的自定义分析器规则
  • 将脚本的路径传递给Invoke-ScriptAnalyzercmdlet以执行linting。

使用您的代码,您会看到以下输出(已经给出了一个名为pg.ps1的脚本(:


RuleName                            Severity     ScriptName Line  Message
--------                            --------     ---------- ----  -------
PSPossibleIncorrectUsageOfRedirecti Warning      pg.ps1     1     Did you mean to use the redirection operator '>'? The
onOperator                                                        comparison operators in PowerShell are '-gt' (greater than)
or '-ge' (greater or equal).
PSPossibleIncorrectComparisonWithNu Warning      pg.ps1     1     $null should be on the left side of equality comparisons.
ll
PSUseDeclaredVarsMoreThanAssignment Warning      pg.ps1     2     The variable 'templID' is assigned but never used.
s
PSAvoidUsingWriteHost               Warning      pg.ps1     3     File 'pg.ps1' uses Write-Host. Avoid using Write-Host
because it might not work in all hosts, does not work when
there is no host, and (prior to PS 5.0) cannot be
suppressed, captured, or redirected. Instead, use
Write-Output, Write-Verbose, or Write-Information.

相关内容

  • 没有找到相关文章

最新更新