管道 Input/Output

Pipeline Input/Output

我想列出C:盘的文件。首先,我想从逻辑磁盘wmi对象中获取设备ID,并列出它。

下面的命令returns:

Get-WmiObject -class Win32_logicaldisk


DeviceID     : C:  
DriveType    : 3  
ProviderName :  
FreeSpace    : 940371968  
Size         : 125809192960  
VolumeName   :  

但是这个命令:

Get-WmiObject -class Win32_logicaldisk | select deviceid | Get-ChildItem -path {$_}

给出以下错误:

Get-ChildItem : Cannot find drive. A drive with the name '@{deviceid=C' does not exist. At line:1 char:60
+ Get-WmiObject -class Win32_logicaldisk | select deviceid | Get-ChildItem -path { ...
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (@{deviceid=C:String) [Get-ChildItem], DriveNotFoundException
+ FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Get-ChildItem -path 接受管道输入,我们如何解决这个问题?

您的 Select 正在返回一个具有 属性 名为 DeviceID 的对象。

使用 -ExpandProperty 获取 属性 值,然后通过管道传输:

Get-WmiObject -class Win32_logicaldisk | select -expandproperty deviceid | Get-ChildItem -path {$_}

您也可以只 select 返回对象中的 属性。在这种情况下,$_.DeviceID

Get-WmiObject -class Win32_logicaldisk | select deviceid | Get-ChildItem -path {$_.DeviceID}