繁体   English   中英

Powershell ForEach 和 ForEach-Object 与 Select

[英]Powershell ForEach & ForEach-Object with Select

我试图使用 ForEach 和 ForEach-Object 遍历 $s4a 中的文件名列表并显示 output。 我发现生成 output 的唯一两种方法是:

  • ForEach ($name in $s4a) {$name.Name}
  • $s4a| ForEach-对象 {$_ | Select 名称}

有人可以让我知道为什么下面的没有产生任何东西,而上面的两个工作吗?

  • ForEach ($name in $s4a) {Select Name} #无结果
  • ForEach ($name in $s4a) {Select $name.Name} #No 结果
  • $s4a| ForEach-Object {Select$_.Name} #无结果
  • $s4a| ForEach-Object {Select Name} #无结果

非常感谢

本质上,这是因为您的语法对于每个不起作用的语句都不正确。 在每个非工作示例中,您都没有正确引用您希望查看“名称”属性的 object。

Select-Object 通常在从管道接受输入 object 时使用,但也可以使用 -InputObject 参数识别 object。

通过 $object.propertyName 调用 object 属性时,您不需要 select 语句。

而不是ForEach ($name in $s4a) {Select Name} ,试试这个: ForEach ($name in $s4a) {$name | Select Name} ForEach ($name in $s4a) {$name | Select Name}

代替ForEach ($name in $s4a) {Select $name.Name} ,试试这个: ForEach ($name in $s4a) {$name.Name}

而不是$s4a| ForEach-Object {Select$_.Name} $s4a| ForEach-Object {Select$_.Name} ,试试这个: $s4a| ForEach-Object {$_.Name} $s4a| ForEach-Object {$_.Name}

而不是$s4a| ForEach-Object {Select Name} $s4a| ForEach-Object {Select Name} ,试试这个: $s4a| ForEach-Object {$_ | Select Name} $s4a| ForEach-Object {$_ | Select Name}

另外,请注意,每种方法返回信息的方式有所不同。 Select 语句返回仅包含您选择的属性的原始对象的修改版本。 而直接调用属性仅返回该属性的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM