我有下面的电源外壳选择某些字段
dir -Path E:\scripts\br\test | Get-FileMetaData | Select-Object name, Comments, Path, Rating
我想要做的是利用名称,评论,路径,评级进一步管道$ _。名称等dosnt工作
答案 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.