我有一个名为MSSQLStartStopServices.ps1
的Powershell脚本,用于停止某些SQL Server服务。使用第三方供应商软件调用此脚本。相关参数为Fully qualified instance name
和Start|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
这会导致同样的错误,就好像引号不存在一样。
如何解决此问题?
答案 0 :(得分:6)
尝试用双引号括起脚本调用,然后用单引号括起每个参数:
".\MSSQLStartStopServices.ps1" 'HOSTNAME\(local)' 'Start'