gpt4 book ai didi

powershell - 如何在Powershell中通过管道传递来自foreach的输出

转载 作者:行者123 更新时间:2023-12-02 23:07:27 33 4
gpt4 key购买 nike

我正在尝试将foreach循环的输出通过管道传递给format命令,但是它不起作用。我认为可能的原因是因为这可行。

$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

当然,我在没有 parent 的情况下尝试过,但最终我认为,如果有的话, parent 是有道理的。就像 $file in (Get-ChildItem -File)一样,它在 parent 中评估表达式并将结果用作实际对象

有没有办法使这项工作?

请注意,除了给出示例机制之外,该代码不应实现任何其他目的

最佳答案

foreach没有可以捕获的输出(除了通过变量赋值找到的糖之外),但是您可以通过将其包装在子表达式中来收集所有返回的对象:

$(foreach ($file in Get-ChildItem -File) {
# ...
}) | Format-List

同样的模式也可以用于 ifswitch语句。

关于powershell - 如何在Powershell中通过管道传递来自foreach的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58960753/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com