使用PowerShell和管道输出选择对象来访问选定的列

时间:2015-09-23 22:15:10

标签: powershell pipe

我有下面的电源外壳选择某些字段

dir -Path E:\scripts\br\test  | Get-FileMetaData | Select-Object name, Comments, Path, Rating 

我想要做的是利用名称,评论,路径,评级进一步管道$ _。名称等dosnt工作

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,您希望对Select-Object的输出执行某些操作,但您希望在管道中执行此操作。

为此,您需要将输出沿管道传递到接受管道输入的Cmdlet(例如ForEach-Object)。如果管道中的下一个操作不接受管道输入,则必须将输出设置为变量并通过变量访问信息,

使用ForEach-Object
在此方法中,您将单独处理每个对象。这与方法1中的第一个选项类似(即,处理Select-Object返回的项集合中的各个项目。)

dir | Get-FileMetaData | Select-Object Name,Comments,Path,Rating | ForEach-Object {
  # Do stuff with $_
  # Note that $_ is a single item in the collection returned by Select-Object
}

如果您的下一个Cmdlet不接受管道输入,则包含变量方法。

使用变量
在此方法中,您将$tempVariable视为一个数组,您可以对每个项目进行操作。如果需要,您可以单独访问每个列,一次性获取所有内容。

$tempVariable = dir | Get-FileMetaData | Select-Object Name,Comments,Path,Rating
# Do stuff with each Name by using $tempVariable[i].Name, etc.
# Or do stuff with all Names by using $tempVariable.Name, etc.