Tente isto:
Get-WmiObject -Class Win32_Volume | Where-Object {$_.DeviceID -like "\?\*"} | Select-Object -Property DriveLetter,DeviceID
Use Get-Help Select-Object -Detailed
para mais informações.
Eu tenho o seguinte comando do PowerShell que retorna todos os tipos de propriedades sobre unidades de disco conectadas ao sistema:
Get-WmiObject -Class Win32_Volume | Where-Object {$_.DeviceID -like "\?\*"}
Estou interessado somente nas propriedades DriveLetter
e DeviceID
e gostaria que elas fossem retornadas em uma tabela assim:
DriveLetter DeviceID
C: \?\Volume{5b982fce-d9e5-11e1-9c28-806e6f6e6963}\
D: \?\Volume{e9820c98-d688-11e1-a45f-001e673f1fc5}\
Eu sei que posso cercar meu comando original e usar o operador dot para retornar uma das minhas propriedades por vez:
(Get-WmiObject -Class Win32_Volume | Where-Object {$_.DeviceID -like "\?\*"}).DriveLetter
Que em troca produz:
C:
D:
Mas eu não sei escrever uma única instrução que retornará duas (ou mais) propriedades como uma tabela. Se não for possível fazer isso com uma única instrução, o que devo fazer para produzir a saída da tabela desejada?
Eu pesquisei no Google por uma resposta, mas como sou muito novo no PowerShell, provavelmente não estou expressando corretamente meus termos de pesquisa e, portanto, não entendo o que imagino ser a resposta mais simples à minha pergunta.
Basta formatar a saída usando o cmdlet Format-Table:
Get-WmiObject -Class Win32_Volume |
Where-Object {$_.DeviceID -like "\?\*"} |
Format-Table DriveLetter,DeviceID
Gera saída:
DriveLetter DeviceID
----------- --------
C: \?\Volume{118e4062-2eba-4f35-9b1b-015c3c1087dc}\
\?\Volume{e2a184aa-dac8-4196-80c6-fd8c7662e377}\
\?\Volume{33697e48-1197-464c-8553-cef00429e5a4}\
Certifique-se de entender como os cmdlets de formatação (ft, fl etc) se integram aos objetos no pipeline.
Tags powershell