我如何编写一个快速1线来写宿主对象属性(比如Name)?这是我要打印...的Name的对象

Get-WmiObject -Class win32_ComputerSystem -namespace "root\CIMV2"

我试过了 ...
 write-host $_.name | Get-WmiObject -Class win32_ComputerSystem -namespace "root\CIMV2"

但这似乎仍会打印所有对象属性。我该怎么做才能解决此命令?

最佳答案

您可以使用 -ExpandProperty cmdletSelect-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;

请注意,由于您只关心NameWin32_ComputerSystem属性,因此,最好使用Get-WmiObject参数将其与-Property进行通信,这样它就不会打扰返回将被丢弃的信息:
Get-WmiObject -Class win32_ComputerSystem -namespace "root\CIMV2" -Property 'Name'

关于powershell - 如何格式化1-liner以打印对象属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20640456/

10-11 23:05
查看更多