【问题标题】:How to pass a parameter with parentheses to Powershell from command line?如何从命令行将带括号的参数传递给Powershell?
【发布时间】:2013-06-15 21:53:49
【问题描述】:

我有一个名为 MSSQLStartStopServices.ps1 的 Powershell 脚本,用于停止一些 SQL Server 服务。正在使用第三方供应商软件调用此脚本。有问题的参数是Fully qualified instance nameStart|Stop

例如

MSSQLStartStopServices.ps1 HOSTNAME\INSTANCENAME Start

对于默认实例,软件将(本地)作为 INSTANCENAME 传递。

MSSQLStartStopServices.ps1 HOSTNAME\(local) Start

但是当我运行它时,我从 Powershell 收到一个错误:

术语“本地”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

当我尝试将实例名称放在引号中时,它在 Powershell 窗口中运行良好:

MSSQLStartStopServices.ps1 "HOSTNAME\(local)" Start

但第三方软件首先从命令行调用 Powershell,如下所示:

powershell .\MSSQLStartStopServices.ps1 "HOSTNAME\(local)" Start

这会导致与引号不存在相同的错误。

我该如何解决这个问题?

【问题讨论】:

  • 用引号括起所有命令和参数 powershell ".\MSSQLStartStopServices.ps1 HOSTNAME(local) Start"
  • 错别字将所有命令和参数用引号括起来 powershell ".\MSSQLStartStopServices.ps1 'HOSTNAME(local)' Start

标签: mysql powershell command-line-arguments


【解决方案1】:

尝试将您的脚本调用用双引号括起来,然后将每个参数用单引号括起来:

".\MSSQLStartStopServices.ps1" 'HOSTNAME\(local)' 'Start'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多