Использование Get-Service, где имя сервиса имеет тире - PullRequest
1 голос
/ 11 марта 2020

Я хотел бы запускать и останавливать определенные службы, используя сценарий PS. Когда я использую следующее:

Get-Service "SAS [SASConfig-Lev1] SASMeta - Metadata Server" | Where {$_.status –eq 'Stopped'} | Start-Service

Я получаю сообщение об ошибке:

Get-Service : The specified wildcard character pattern is not valid: SAS [SASConfig-Lev1] SASMeta - Metadata Server

At line:1 char:1

+ Get-Service "SAS [SASConfig-Lev1] SASMeta - Metadata Server" | Where  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Get-Service], WildcardPatternException
    + FullyQualifiedErrorId : RuntimeException,Microsoft.PowerShell.Commands.GetServiceCommand

Проблема не в предложении Where, потому что, если я удаляю его, я получаю ту же ошибку.

Get-Service "SAS [SASConfig-Lev1] SASMeta - Metadata Server" | Start-Service

Я пробовал это

Get-Service 'SAS [SASConfig-Lev1] SASMeta - Metadata Server' | Start-Service

и это

Get-Service "SAS [SASConfig`-Lev1] SASMeta - Metadata Server" | Start-Service

, но получаю ту же ошибку.

Любые предложения о том, как включить тире в имя службы и иметь Get-Service для запуска без ошибок?

1 Ответ

2 голосов
/ 11 марта 2020

Чтобы получить квадратные скобки в значении имени службы, вам нужно выполнить некоторое экранирование. Две ведущие могильные метки (``) перед открывающей скобкой не являются ошибкой. Экранирование убеждает команду Get-Service при разборе , а не видеть первый аргумент как содержащий символы подстановки.

Get-Service "SAS ``[SASConfig-Lev1] SASMeta - Metadata Server"

Пример из моей консоли powershell:

> Get-Service "SAS ``[BIserver-Lev1] Web Infrastructure Platform Data Server" | Format-List


Name                : SAS [BIserver-Lev1] Web Infrastructure Platform Data Server
DisplayName         : SAS [BIserver-Lev1] Web Infrastructure Platform Data Server
Status              : Running
DependentServices   : {}
ServicesDependedOn  : {RPCSS}
CanPauseAndContinue : True
CanShutdown         : True
CanStop             : True
ServiceType         : Win32OwnProcess

Подстановочные знаки

PowerShell supports the following wildcard characters:

Wildcard  Description   
*         Match zero or more characters
?         Match one character in that position
[ ]       Match a range of characters i.e. [a-j]
[ ]       Match specific characters   i.e. [adrstz]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...