我的Windows服务中有一个Apache服务'SERV [XYZ]',我希望能够从PowerShell脚本启动它。
在脚本中,我添加了变量保存服务名称:
$serv = "SERV[XYZ]";
stop-service $serv;
start-service $serv;
但这不会启动该服务。 PowerShell执行时没有错误。
答案 0 :(得分:1)
*-Service
cmdlet对服务名称执行wildcard matches。例如,请参阅Start-Service
的文档:
<强>参数强>
的 -DisplayName&LT;字符串[]&GT; 强>指定要启动的服务的显示名称。 允许使用通配符。
模式[XYZ]
表示“匹配任何字符X,Y或Z”(就像在正则表达式中一样),因此您的语句会尝试停止/启动名为SERVX
的服务,{{1和/或SERVY
。要匹配文字字符串SERVZ
,您需要阻止将方括号视为特殊字符,例如像这样:
[XYZ]
如果您只有一个名称以$serv = 'SERV[[]XYZ[]]'
Stop-Service $serv
Start-Service $serv
开头的服务,您还可以使用SERV
或SERV*
这样的模式,其中SERV?XYZ?
(匹配单个的通配符)字符)掩盖方括号。
另一种选择是使用没有名称的?
并通过Get-Service
过滤结果:
Where-Object