Existe algum conjunto de ferramentas para obter uma saída baseada em texto e canalizá-la para um objeto dinâmico que possa ser consultado como colunas?
Especificamente, estou invocando ..
query session /server:MYSERVER
.. que está saindo ..
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
console Jon 1 Active
Esta é a minha primeira tarefa em uma função de DevOps, para agir de acordo com essa saída com base nas condições das colunas, mas depois de várias tentativas de canalizar para o foreach etc. percebi que são apenas várias linhas de strings.
O que eu esperava era algo como ...
query session /server:MYSERVER | foreach '
{ '
if ($_.Username -eq "Jon") '
{'
custom-action $_.ID '
} '
}
(Note que eu não preciso necessariamente avaliar o nome de usuário, ou não apenas o nome de usuário, estou apenas fazendo isso neste exemplo.)
Obviamente, isso não funcionará porque isso ...
query session /server:192.168.1.103 | foreach { echo $_.GetType() }
.. gera isso ..
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
True True String System.Object
True True String System.Object
A única solução que encontrei é a extração manual das colunas usando String.Substring (). Eu estava esperando que houvesse ferramentas do PowerShell que automatizassem isso.
[[ Este é um exemplo, ]], mas alguns as colunas estão em branco e as colunas de largura fixa não têm a mesma largura entre elas, portanto, a análise seria muito mais manual do que os exemplos. Eu esperava que as atualizações de versão do Powershell pudessem ter ferramentas melhores, talvez?
Usando o Windows Server 2012 R2 (que possui o PowerShell 4).