时间:2021-05-22
有时你可能想在管道运行在某个特定的条件下,终止管道。今天来演示一个比较新颖的方式,它适用于PowerShell 2.0或着更高版本。先看代码:
filter Stop-Pipeline{param([scriptblock]$condition = {$true}) if (& $condition){continue}$_} do {Get-ChildItem c:\Windows -Recurse -ErrorAction SilentlyContinue |Stop-Pipeline { ($_.FullName.ToCharArray() -eq '\').Count -gt 3 }} while ($false)管道会递归的扫描windows目录,新引入的命令stop-pipeline,它可以接受一个布尔条件参数,一旦条件成立,管道就会终止。
这个例子可以控制递归的深度,一旦检测到路径中包含了三个反斜杠,管道就会终止,当然你可以调节3到更大的整数,以增加扫描的文件夹深度。
这个诀窍需要管道必须嵌入在一个do 循环中,因为Stop-Pipeline在条件满足时,是通过continue语句来终止管道的。
听起来略微笨拙,但是效果杠杠的。再来看另一个用法,让管道最多运行10秒钟:
$start = Get-Date$MaxSeconds = 10 do {Get-ChildItem c:\Windows -Recurse -ErrorAction SilentlyContinue |Stop-Pipeline { ((Get-Date) - $start).TotalSeconds -gt $MaxSeconds }} while ($false)声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
继续与终止循环的条件do-while()会先执行再去判断,能保证循环至少执行一次。复制代码代码如下:PSC:Powershell>do{$n=Read-Host
PowerShell的一个重中之重的功能就是管道(pipeline),本文从浅入深,一步一步详解管道的使用方法和例子,来看看有没有你所不知道的吧,如果全知道,恭
管道把上一条命令的输出作为下一条命令的输入。PowerShell管道例如通过ls获取当前目录的所有文件信息,然后通过Sort-Descending对文件信息按照
管道并不是什么新事物,以前的Cmd控制台也有重定向的命令,例如Dir|More可以将结果分屏显示。传统的Cmd管道是基于文本的,但是Powershell是基于对
如果你能够提前知道你想从管道中获取元素的个数,可以使用Select-Object来终止流处理命令的的管道,这会节省很多时间。下面的例子会从Windows文件夹下