Ric*_*ard 9 powershell pipeline conceptual
我了解PowerShell管道通过获取一个cmdlet的输出并将其作为输入传递给另一个cmdlet来工作.但是这样做怎么样?
第一个cmdlet是否完成,然后一次传递所有输出变量,然后由下一个cmdlet处理?
或者,第一个cmdlet的每个输出是一次一个,然后通过所有剩余的管道cmdlet运行?
Kei*_*ill 12
您可以通过简单的脚本查看管道订单的工作原理:
function a {begin {Write-Host 'begin a'} process {Write-Host "process a: $_"; $_} end {Write-Host 'end a'}}
function b {begin {Write-Host 'begin b'} process {Write-Host "process b: $_"; $_} end {Write-Host 'end b'}}
function c { Write-Host 'c' }
1..3 | a | b | c
Run Code Online (Sandbox Code Playgroud)
输出:
begin a
begin b
process a: 1
process b: 1
process a: 2
process b: 2
process a: 3
process b: 3
end a
end b
c
Run Code Online (Sandbox Code Playgroud)
Powershell管道以异步方式工作.这意味着第一个cmdlet的输出可以立即用于第二个cmdlet一个对象(即使第一个cmdlet尚未完成执行).
例如,如果您运行以下行:
dir -recurse| out-file C:\a.txt
Run Code Online (Sandbox Code Playgroud)
然后按Control + C停止执行,您将看到目录的一部分写入文本文件.
一个更好的例子是以下代码:(这对于删除驱动器c上的所有.tmp文件确实很有用:)
get-childitem c:\ -include *.tmp -recurse | foreach ($_) {remove-item $_.fullname}
Run Code Online (Sandbox Code Playgroud)
每次第二个cmdlet中的$ _获取a(单个文件)的值
归档时间: |
|
查看次数: |
1644 次 |
最近记录: |