PowerShell实现按条件终止管道的方法_PowerShell

有时你可能想在管道运行在某个特定的条件下,终止管道。今天来演示一个比较新颖的方式,它适用于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)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索powershell
, 按条件
终止管道
powershell 终止、powershell 管道、powershell 管道符、powershell 管道 gm、powershell 条件判断,以便于您获取更多的相关知识。

时间: 2024-10-23 21:18:31

PowerShell实现按条件终止管道的方法_PowerShell的相关文章

PowerShell实现按条件终止管道的方法

  这篇文章主要介绍了PowerShell实现按条件终止管道的方法,有时你可能想在管道运行在某个特定的条件下,终止管道的运行,本文就讲解了这样一种方法,需要的朋友可以参考下 有时你可能想在管道运行在某个特定的条件下,终止管道.今天来演示一个比较新颖的方式,它适用于PowerShell 2.0或着更高版本.先看代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 filter Stop-Pipeline { param ( [scriptblo

PowerShell中终止管道的方法_PowerShell

如果你能够提前知道你想从管道中获取元素的个数,可以使用Select-Object来终止流处理命令的的管道,这会节省很多时间. 下面的例子会从Windows文件夹下搜寻 explorer.exe示例,因为Select-Object语句可以在管道找到结果的那一瞬终止管道.否则,Get-ChildItem会递归的遍历所有子目录然后匹配出你想要的结果. 复制代码 代码如下: #requires -Version 3 Get-ChildItem -Path c:\Windows -Recurse -Fil

PowerShell中终止管道的方法

  这篇文章主要介绍了PowerShell中终止管道的方法,本文直接给出代码实例,需要的朋友可以参考下 如果你能够提前知道你想从管道中获取元素的个数,可以使用Select-Object来终止流处理命令的的管道,这会节省很多时间. 下面的例子会从Windows文件夹下搜寻 explorer.exe示例,因为Select-Object语句可以在管道找到结果的那一瞬终止管道.否则,Get-ChildItem会递归的遍历所有子目录然后匹配出你想要的结果. 代码如下: #requires -Version

PowerShell脚本实现创建桌面快捷方式的方法_PowerShell

本文介绍如何使用PowerShell将一个程序或文件,创建一个桌面快捷方式.在Windows系统里面,手工操作创建桌面快捷方式是很容易的,您只需要右键拖动文件到桌面,然后放开,在自动弹出的菜单中选择"在此创建快捷方式"即可完成,但要编程来实现这个效果就比较复杂了. 首先,我们要使用到COM组件,创建桌面快捷方式,最简单的办法是调用WScript.Shell这个COM组件.那么在PowerShell如何创建一个COM组件呢? 复制代码 代码如下: $shell = New-Object

PowerShell读取文本文件指定行内容的方法_PowerShell

本文介绍一个PowerShell中如何一步到位的获取到一个文本文件的第N行.比如一个文本文件,它有1000行,我想把第500行的内容直接取出来的,最简单的方法是通过PowerShell来实现. 在PowerShell中,可以通过Get-Content这个cmdlet来获取文本文件的内容.Get-Content将一个文本文件读取到一个数组中,每一个数组元素就是文件的一行内容.比如一个文本文件内容如下: 复制代码 代码如下: 111 222 333 那么,使用Get-Content获取到一个数组,数

PowerShell隐藏不显示窗口的多种方法_PowerShell

启动PowerShell时隐藏自己的窗口 假如我在计划任务中定时通过Powershell.exe来执行一个脚本文件,我想隐藏这个窗口,此时我们可以考虑使用PowerShell.exe的选项参数: 复制代码 代码如下: -WindowStyle  将窗口样式设置为 Normal.Minimized.Maximized 或 Hidden. 复制代码 代码如下: PowerShell.exe -WindowStyle Hidden -file '您的脚本.ps1' 在PowerShell启动其它进程时

PowerShell把文件删除到回收站的方法_PowerShell

某同事辛苦了一个月加班快要完成的设计方案,因为自己一时不小心,直接从公司的共享文件服务器上删除了,无法追回.我也试着建了个共享文件夹,通过资源管理器删除后,也在回收站无法找到,这样也算理解那位女汉子的苦衷了. 我们平时使用PowerShell的Remove-Item命令删除了文件,也是属于彻底删除.其实说真的,如果可以,我很想对招远快餐店的6名凶手,执行remove命令,不,直接kill命令. 那怎样在PowerShell中将文件安全地删除进回收站?显然需要调用Windows的Com组件了: 复

PowerShell在控制台输出特殊符号的方法_PowerShell

您知道吗,PowerShell控制台也可以输出特殊的图标?而你需要做的只是,设置控制台的字体为TrueType 字体,比如"Consolas". 要显示特殊字符,请使用十进制或十六进制字符代码,例如: [Char]8730 [Char]0x25BA 或着打开系统上内置的应用程序 "CharacterMap" 来选择一个你想在控制台上显示的的符号.下面的例子就是通过这种途径来把PowerShell控制台上的提示符信息变得更加诡异: 或着打开系统上内置的应用程序 &qu

PowerShell函数参数用星号隐藏的方法_PowerShell

本文介绍在PowerShell中创建函数时,如何让函数的参数输入值的时候自动变成星号. 什么叫自动变成星号呢?举个例子,我们在登录一个邮箱时,输入用户时看到的是明文的,但我们在输入密码时,看到的是一个个增加的星号.在使用PowerShell自定义函数时,如何设置才能让输入密码之类的参数时,自己用星号掩盖呢?且往下看. 复制代码 代码如下: function Test-Password {     param     (     [Parameter(Mandatory=$true)]     $