我有一个名为MSSQLStartStopServices.ps1的Powershell脚本,用于停止某些Server服务。该脚本正在使用第三方供应商软件进行调用。所讨论的参数是Fully qualified instance name和Start|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这会导致相同的错误,就好像引号不存在一样。
我该如何解决这个问题?
发布于 2013-06-19 11:43:37
尝试将脚本调用封装在双引号中,然后在单引号中包含每个参数:
".\MSSQLStartStopServices.ps1" 'HOSTNAME\(local)' 'Start'发布于 2022-09-01 14:15:39
将此信息添加到任何具有笑脸问题的未来人员中,发现以下页面:
如果您想使用变量作为参数值,其中包含"(“或”\“)等字符,则需要这样做:-parameter_name ("'" + $variable + "'")
这对我有效,因为powershell将删除在调用非powershell方法时添加到字符串中的所有双引号。
https://stackoverflow.com/questions/17189965
复制相似问题