我如何编写一个快速1线来写宿主对象属性(比如Name
)?这是我要打印...的Name
的对象
Get-WmiObject -Class win32_ComputerSystem -namespace "root\CIMV2"
我试过了 ...
write-host $_.name | Get-WmiObject -Class win32_ComputerSystem -namespace "root\CIMV2"
但这似乎仍会打印所有对象属性。我该怎么做才能解决此命令?
最佳答案
您可以使用 -ExpandProperty
cmdlet的Select-Object
参数仅检索计算机名称,然后将其通过管道传递给Write-Host
(格式为多行以提高可读性):
Get-WmiObject -Class win32_ComputerSystem -namespace "root\CIMV2" `
| Select-Object -ExpandProperty 'Name' `
| Write-Host;
或者,使用
ForEach-Object
cmdlet获取Name
属性:Get-WmiObject -Class win32_ComputerSystem -namespace "root\CIMV2" `
| ForEach-Object { $_.Name; } `
| Write-Host;
这不是单线的,而是类似于您尝试的另一种方法:
$computer = Get-WmiObject -Class win32_ComputerSystem -namespace "root\CIMV2";
Write-Host $computer.Name;
请注意,由于您只关心
Name
的Win32_ComputerSystem
属性,因此,最好使用Get-WmiObject
参数将其与-Property
进行通信,这样它就不会打扰返回将被丢弃的信息:Get-WmiObject -Class win32_ComputerSystem -namespace "root\CIMV2" -Property 'Name'
关于powershell - 如何格式化1-liner以打印对象属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20640456/