Windows Powershell ForEach-Object 循环_PowerShell

对管道对象逐个处理

如果使用Get-WmiObject 获取系统中的服务,为了排版可能会也会使用Format-Table对结果进行表格排版。

复制代码 代码如下:

PS C:Powershell> Get-WmiObject Win32_Service | Format-Table status,DisplayName
-AutoSize

status DisplayName
------ -----------
OK     Adobe Acrobat Update Service
OK     Application Experience
OK     Application Layer Gateway Service
OK     Application Host Helper Service
OK     Application Identity
OK     Application Information
OK     Application Management
OK     ASP.NET State Service

但是如果想对每个服务进行更定制化的处理可是使用ForEach-Object

复制代码 代码如下:

PS C:Powershell> Get-WmiObject Win32_Service | ForEach-Object {"Name:"+ $_.Disp
layName, ", Is ProcessId more than 100:" + ($_.ProcessId -gt 100)}
Name:Adobe Acrobat Update Service , Is ProcessId more than 100:True
Name:Application Experience , Is ProcessId more than 100:False
Name:Application Layer Gateway Service , Is ProcessId more than 100:False
Name:Application Host Helper Service , Is ProcessId more than 100:True
Name:Application Identity , Is ProcessId more than 100:True
Name:Application Information , Is ProcessId more than 100:True
Name:Application Management , Is ProcessId more than 100:False
Name:ASP.NET State Service , Is ProcessId more than 100:False

结合条件处理

ForEach-Object的处理可以包含任意Powershell脚本,当然也包括条件语句

复制代码 代码如下:

Get-WmiObject Win32_Service | ForEach-Object {
    if ($_.ProcessId -gt 3000)
    { "{0}({1})" -f $_.DisplayName,$_.ProcessID}
}
Windows Presentation Foundation Font Cache 3.0.0.0(5408)
Microsoft Network Inspection(5260)
BranchCache(4112)
Windows Modules Installer(7656)

调用方法

在ForEach-Object中,$_代表当前对象,当然也允许通过$_,调用该对象支持的方法。
下面的例子杀死所有IE浏览器进程:

复制代码 代码如下:

PS C:Powershell> Get-Process iexplore

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    883      29    14728      22432   181    34.26   4300 iexplore
    771      28    55552     129152   425     8.56   5732 iexplore
   1216      51   104324     143916   539   572.41   5912 iexplore
    801      25    49200      25372   285     5.99   6252 iexplore
    691      25    57564      95796   333     8.08   6388 iexplore
   1256      38    85848     127012   379    20.37   7856 iexplore

PS C:Powershell> Get-Process iexplore | ForEach-Object {$_.kill()}
PS C:Powershell> Get-Process iexplore
Get-Process : 找不到名为“iexplore”的进程。请验证该进程名称,然后再次调用 cmdlet。
所在位置 行:1 字符: 12
+ Get-Process <<<< iexplore
+ CategoryInfo : ObjectNotFound: (iexplore:String) [Get-Process],
ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.
Commands.GetProcessCommand

时间: 2024-09-20 09:32:37

Windows Powershell ForEach-Object 循环_PowerShell的相关文章

Windows Powershell Do While 循环_PowerShell

继续与终止循环的条件 do-while()会先执行再去判断,能保证循环至少执行一次. 复制代码 代码如下: PS C:Powershell> do { $n=Read-Host } while( $n -ne 0) 10 100 99 2012 世界末日 为什么不退出 因为条件不满足 怎样才能满足 请输入一个0,试一试 0 PS C:Powershell> 单独使用While 复制代码 代码如下: $n=5 while($n -gt 0) {     $n     $n=$n-1 } 5 4

Windows Powershell 介绍和安装_PowerShell

Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境.你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆. powershell需要.NET环境的支持,同时支持.NET对象.微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象.其可读性,易用性,可以位居当前所有shell之首. 当前powershell有四版本,分别为1.0,2.0,3.0 ,4.0 如果您的系统是window7或者Windows Ser

Windows PowerShell 微软官方解释_PowerShell

通过提供一百多种系统管理实用工具.一致的语法.及对普通管理数据更好地导航(如登记或 Windows Management Instrumentation (WMI)),Windows PowerShell 使 Windows 管理员提高了生产力.Windows PowerShell 还包括全面启动 Windows 系统自动化管理任务的脚本编写语言.Windows PowerShell 语言是直观的,并支持贵企业现有的脚本和命令行工具投入.Exchange Server 2007 和 System

Windows Powershell 进行数学运算_PowerShell

PowerShell支持如下算术运算符: 运算符 描述 例子 结果 + 把两个数值相加 6+2  8 - 把两个数值相减 6-2  4 - 将数值转换为对应的负值 -2+6 4 * 把两个数值相乘  6*2 12 / 把两个数值相除 6/2  3 % 返回除法运算的余数 6%4  2 运算符优先级 有一些因素决定了包含算术运算符的表达式如何被处理. 这些因素包括了: 运算符种类, 运算符的顺序, 是否有表达被括号括起来. 例如, 10+4/2返回结果12, 然而(10+4)/2返回结果却是7.

Windows Powershell Where-Object 条件过滤_PowerShell

过滤管道结果 使用Get-Process返回所有的当前进程 ,但是你可能并不对所有的进程感兴趣,然后通过每个Process对象的属性进行过滤.首先得知道每个对象支持那些属性. 复制代码 代码如下: PS C:Powershell> Get-Process | select -First 1 | fl * __NounName                 : Process Name                       : AcroRd32 Handles               

Windows Powershell Foreach 循环_PowerShell

下面举两个例子: 复制代码 代码如下: $array=7..10 foreach ($n in $array) {     $n*$n }   #49 #64 #81 #100   foreach($file in dir c:\windows) {     if($file.Length -gt 1mb)     {         $File.Name     } }   #explorer.exe #WindowsUpdate.log 这里只为了演示foreach,其实上面的第二个例子可以

Windows Powershell过滤管道结果_PowerShell

如果要过滤对象可以使用Where-Object:如果要过滤对象的属性,可以使用Select-Object:如果要自定义个性化的过滤效果可以使用ForEach-Object.最后如果想过滤重复的结果,可是使用Get-Uinque. 筛选管道结果中的对象 如果你只对管道结果的特定对象感兴趣,可是使用Where-Object对每个结果进行严格筛选,一旦满足你的标准才会保留,不满足标准的就会自动丢弃.例如你通过Get-service查看运行在机器上的当前服务,但是可能只关心哪些正在运行的服务,这时就可是

Windows Powershell 变量的作用域_PowerShell

如果我们对变量不做特别的声明,Powershell解释器会自动处理和限制变量的作用域.将下面的内容命令保存着至test1.ps1 $windows = $env:windir "Windows Folder: $windows" 然后在控制台给变量$windows赋值,并调用Test.ps1脚本. PS> $windows="Hellow" PS> .\test.ps1 Windows Folder: C:\Windows PS> $windows

Windows Powershell 管道和重定向_PowerShell

管道 把上一条命令的输出作为下一条命令的输入. PowerShell管道 例如通过ls获取当前目录的所有文件信息,然后通过Sort -Descending对文件信息按照Name降序排列,最后将排序好的文件的Name和Mode格式化成Table输出. PS C:\PStest> ls | sort -Descending Name | Format-Table Name,Mode Name Mode ---- ---- d.txt -a--- c.txt -a--- b.txt -a--- ABC

Windows Powershell 执行外部命令_PowerShell

Powershell 能够像CMD一样很好的执行外部命令. 通过netstat查看网络端口状态 PS C:\PS> netstat Active Connections Proto Local Address Foreign Address State TCP 192.168.0.100:3049 192.168.0.88:7575 ESTABLISHED TCP 192.168.0.100:3052 192.168.0.88:7575 ESTABLISHED TCP 192.168.0.100