Gostaria de adicionar uma coluna computada à get-service
saída com base no nome. Digamos que, para este exemplo, eu gostaria de pegar a Status
coluna e fazer uma substring dela para mostrar os 3 primeiros caracteres em uma nova coluna de computador chamada Name 2
.
Tentei o seguinte, mas não obtive o comportamento esperado:
# Get all services
$services = Get-Service -Name BITS, appinfo
# Add a computed column
$servicesWithComputedColumn = $services | Select-Object *, @{Name='ServiceType'; Expression={ if ($_.StartType -eq 'Automatic') { 'rsAuto' } else { 'rsManual' } }}
# Display the result
$servicesWithComputedColumn
Prefácio :
O trecho de código na sua pergunta tenta criar uma propriedade calculada diferente daquela descrita verbalmente.
A sintaxe desse trecho de código está correta em princípio, mas falha porque o nome da propriedade calculada colide com uma propriedade existente presente no objeto de entrada.
-ExcludeProperty ServiceType
argumento àSelect-Object
chamada.Para responder à sua pergunta conforme solicitado, usando uma propriedade calculada :
Observe a necessidade de chamar
.ToString()
on$_.Status
para executar uma operação de substring (.Substring()
), porque$_.Status
o último é uma instância de um[enum]
tipo derivado de , especificamente[System.ServiceProcess.ServiceControllerStatus]
.Observe que se você precisar da propriedade calculada apenas para fins de exibição , não há necessidade de usar
Select-Object
(o que você precisaria para processamento programático posterior ) e, em vez disso, você pode usar a propriedade calculada diretamente comFormat-Table