Estou tentando obter uma lista de serviços cujo nome contém um espaço, por exemplo, serviços do SQL Server. Para minha surpresa, a instrução a seguir não retorna um único registro. Parece que o espaço tem um significado especial e não é analisado literalmente como eu esperava.
get-service | where-object name -match 'sql server'
Qual é a maneira canônica do PowerShell de corresponder a uma string que contém um espaço?
O Windows Service Control Manager (SCM) é responsável por gerenciar o banco de dados de serviços. Ao criar um novo serviço, usando a ferramenta de linha de comando
sc.exe
ou diretamente usando as chamadas de API do Windows do SCM, por exemplo ( CreateServiceA ), você pode especificar aServiceName
eDisplayName
.Se você procurar no registro a lista de serviços mantida pelo SCM, verá o
ServiceName
valor sob a seguinte chave como o valor exclusivo:Quando você usa ferramentas como SC.exe ou linguagens de script como VBScript, PowerShell para interagir com o SCM, normalmente (mas nem sempre) você precisa usar o
ServiceName
valor em vez deDisplayName
consultar/parar/iniciar, etc...Quando você exibe o snap-in MMC Services (services.msc), a
Name
coluna é, na verdade,DisplayName
do serviço, e não doServiceName
valor.A
Services
guia no Gerenciador de Tarefas exibe ambos, mas ainda é confusa, pois aDescription
coluna não é a descrição do serviço (os serviços também podem ter descrições), mas o arquivoServiceName
. Compreensível que eles se misturem.