2013-06-19 55 views
1

我有一个叫做MSSQLStartStopServices.ps1的Powershell脚本,用于停止一些SQL Server服务。该脚本正在使用第三方供应商软件进行调用。所讨论的参数是Fully qualified instance nameStart|Stop如何使用括号将参数从命令行传递给Powershell?

例如,

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 

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

如何解决此问题?

+0

环绕所有的命令,而params引号的PowerShell –

+0

typo用引号括住所有命令和参数''。\ MSSQLStartStopServices.ps1'HOSTNAME(local)'Start' –

回答

5

尝试用双引号引起你的脚本调用,然后每个参数用单引号:“\ MSSQLStartStopServices.ps1 HOSTNAME \(本地)开始”

".\MSSQLStartStopServices.ps1" 'HOSTNAME\(local)' 'Start' 
相关问题