返回

CMD 中运行 PowerShell:避免脚本参数错误的实用指南

windows

在 CMD 中运行 PowerShell:绕过脚本参数错误的指南

问题:脚本参数错误

如果你曾尝试在 CMD 命令行中运行一个带有输入参数的 PowerShell 脚本,你可能会遇到一个错误,阻止脚本正常运行。此错误可能是由于 CMD 无法直接解释 PowerShell 命令语法引起的。

解决方案:Invoke-Expression 和转义字符

为了解决这个问题,我们将使用 Invoke-Expression (iex) 命令来执行 PowerShell 命令。iex 允许我们传递一个包含参数的命令字符串。此外,我们还需要使用转义字符 () 来转义脚本路径和参数中的任何特殊字符,例如空格和引号。

修改后的命令:

cmd /c "iex (powershell.exe -noexit '& ''D:\Work\SQLExecutor.ps1 -gettedServerName ''MY-PC'' '')'"

让我们分解这个命令:

  • cmd /c:在 CMD 中执行命令。
  • iex:执行 PowerShell 命令。
  • powershell.exe -noexit:启动 PowerShell 进程并使其保持运行状态。
  • &:调用 PowerShell 脚本。
  • '':用双引号括住脚本路径和参数。
  • \'':转义双引号,以便 CMD 将其视为字符串的一部分。

具体步骤:

  1. 使用 Invoke-Expression (iex): 使用 iex 命令执行 PowerShell 命令。
  2. 用双引号括住脚本路径和参数: 用双引号将脚本路径和参数括起来。
  3. 使用转义字符: 在双引号中使用转义字符 () 来转义脚本路径和参数中的任何特殊字符。

SEO 关键词:

  • powershell cmd
  • running powershell in cmd
  • powershell script with parameters
  • invoke-expression
  • escaping special characters
  • powershell command line
  • windows command prompt
  • powershell syntax

常见问题解答

  1. 为什么需要使用 iex?
    iex 允许我们传递带有参数的命令字符串,从而在 CMD 中执行 PowerShell 命令。
  2. 为什么要用双引号括住参数?
    双引号将脚本路径和参数视为一个字符串,避免 CMD 混淆特殊字符。
  3. 转义字符有什么作用?
    转义字符转义双引号和其他特殊字符,以确保 CMD 将其视为字符串的一部分。
  4. 有什么其他方法可以运行 PowerShell 脚本吗?
    你可以使用 powershell 命令或创建批处理文件来运行 PowerShell 脚本。
  5. 我还可以使用 Invoke-Command 吗?
    Invoke-Command 是另一个选项,但它需要在目标计算机上启用远程 PowerShell。