首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从命令行将带括号的参数传递给Powershell?

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

Stack Overflow用户
提问于 2013-06-19 11:26:40
回答 2查看 3.1K关注 0票数 1

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

例如:

代码语言:javascript
运行
复制
MSSQLStartStopServices.ps1 HOSTNAME\INSTANCENAME Start

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

代码语言:javascript
运行
复制
MSSQLStartStopServices.ps1 HOSTNAME\(local) Start

但是当我运行这个程序时,我会从Powershell中得到一个错误:

术语“本地”不被识别为cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后再试一次。

当我尝试将实例名称放在引号中时,它在Powershell窗口中工作得很好:

代码语言:javascript
运行
复制
MSSQLStartStopServices.ps1 "HOSTNAME\(local)" Start

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

代码语言:javascript
运行
复制
powershell .\MSSQLStartStopServices.ps1 "HOSTNAME\(local)" Start

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

我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-19 11:43:37

尝试将脚本调用封装在双引号中,然后在单引号中包含每个参数:

代码语言:javascript
运行
复制
".\MSSQLStartStopServices.ps1" 'HOSTNAME\(local)' 'Start'
票数 7
EN

Stack Overflow用户

发布于 2022-09-01 14:15:39

将此信息添加到任何具有笑脸问题的未来人员中,发现以下页面:

如果您想使用变量作为参数值,其中包含"(“或”\“)等字符,则需要这样做:-parameter_name ("'" + $variable + "'")

这对我有效,因为powershell将删除在调用非powershell方法时添加到字符串中的所有双引号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17189965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档