我尝试将foreach
循环的输出导入格式命令,但它不起作用。我认为可能的原因是因为这个可以工作。
$op = foreach ($file in (Get-ChildItem -File)) {
$file |
Get-Member |
Where-Object {$_.MemberType -eq "Method" -and $_.Definition -like "*system*" } |
Select-Object -Property Name, MemberType
}
$op | Format-List
如果我可以将整个输出分配给一个变量,并将该变量管道传递到另一个命令中,为什么以下命令不起作用?
(foreach ($file in (Get-ChildItem -File)) {
$file |
Get-Member |
Where-Object {$_.MemberType -eq "Method" -and $_.Definition -like "*system*" } |
Select-Object -Property Name, MemberType
}) | Format-List
当然,我尝试过没有括号,但最终我认为如果有括号反而更好理解。就像
$file in (Get-ChildItem -File)
一样,在括号内求值并将结果作为实际对象使用。有方法使这个工作吗?
请注意,该代码不应该完成除演示机制以外的任何其他操作。
$(foreach ...)
,它会起作用。 - Maximilian Burszley$()
和()
之间的确切原因或区别。我以前在这个标签中问过问题,但没有人能给我一个简明扼要的答案。我只知道将东西包装在子表达式中会导致它们以不同的方式输出。 - Maximilian Burszley