如何从命令行将带括号的参数传递给Powershell?

时间:2013-06-19 11:26:40

标签: mysql powershell command-line-arguments

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

e.g。

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

这会导致同样的错误,就好像引号不存在一样。

如何解决此问题?

1 个答案:

答案 0 :(得分:6)

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

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