小编Azh*_*har的帖子

如何使用 PowerShell cmdlet 对 PowerShell 脚本文件进行完整语法检查

我正在编写一个控制台应用程序来验证 PowerShell 脚本语法。我的请求是验证 PowerShell 脚本而不执行该脚本。我在下面的 PowerShell 命令中发现了这个命令,它可以在不执行脚本的情况下执行语法检查。

Get-Command -syntax 'D:\powershell\deleteDemoFile.ps1'
Run Code Online (Sandbox Code Playgroud)

但是,我发现它没有进行完整的语法检查。例如,在 PowerShell 中使用变量而未声明,或者变量在(Function、if、ForEach 等)中存在拼写错误,上述命令不会捕获此类语法错误。

下面是 PowerShell 脚本文件 (.\deleteDemoFile.ps1) 的示例代码。请注意,下面的代码中 (if, Function) 的拼写错误,并且使用了变量“$log_dir”但未声明。

当我运行 PowerShell 命令时,Get-Command -syntax 'D:\powershell\deleteDemoFile.ps1'该命令不会引发任何语法错误。

Write-Host "Hello, World!"

ifTypo(-not (test-path -path $log_dir )) {
   new-item -itemtype directory -path $log_dir
}


FunctionTypo log {
   Param ([string]$log_string)
   write-host $log_string
   add-content $log_file -value $log_string
}

log("Deleting a demo txt file")

# PowerShell -WhatIf safety parameter
Clear-Host
Get-Childitem D:\powershell\SomeFile\demo.txt -Recurse | Remove-Item
Run Code Online (Sandbox Code Playgroud)

所以我想知道。

  • 此 PowerShell 命令进行语法检查的效率如何?
  • 它是否仅验证 PowerShell cmdlet、函数和别名的语法?
  • 此命令与哪个版本的 …

validation powershell syntax-checking powershell-cmdlet

4
推荐指数
1
解决办法
2724
查看次数