PowerShell中的含义是什么?

mit*_*uis 8 powershell

我今天遇到过这个:

$tests = (Get-ChildItem . -Recurse -Name bin |% { Get-ChildItem $_ -Recurse -Filter *.Unit.Tests.dll } |% {  $($_.FullName) })
Write-Host ------------- TESTS -----------
Write-Host $tests
Write-Host -------------------------------
.\tools\xunit\xunit.console.exe $tests -xml test-report.unit.xml
Run Code Online (Sandbox Code Playgroud)

我无法理解'|%'在那里做什么.有谁可以解释它用于什么?

非常感谢

bri*_*ist 8

%别名ForEach-Object小命令.

别名只是您可以引用cmdlet或函数的另一个名称.例如dir,lsgci,都是别名Get-ChildItem.

ForEach-Object对通过管道传递给它的[ScriptBlock] 每个项执行a ,因此将一个cmdlet的结果通过管道传输,ForEach-Object可以针对每个单独的项运行一些代码.

在你的榜样,Get-ChildItem是找到所有的binS IN某个目录树,然后为每一个被发现,Get-ChildItem被用来查找所有匹配下的文件*.Unit.Tests.dll,然后为那些中的每一个,全名是返回到管道(将被分配给$tests变量).