当前位置: 首页 > 编程笔记 >

Windows Powershell ForEach-Object 循环

解博明
2023-03-14
本文向大家介绍Windows Powershell ForEach-Object 循环,包括了Windows Powershell ForEach-Object 循环的使用技巧和注意事项,需要的朋友参考一下

对管道对象逐个处理

如果使用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 Manahtml" target="_blank">gement , 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

 类似资料:
  • 描述 (Description) java.lang.reflect.Method.invoke(Object obj, Object... args)方法在具有指定参数的指定对象上调用此Method对象表示的基础方法。 各个参数自动展开以匹配原始形式参数,并且原始参数和参考参数都根据需要进行方法调用转换。 声明 (Declaration) 以下是java.lang.reflect.Method.

  • 描述 (Description) java.lang.reflect.Field.get(Object obj)方法返回指定对象上此Field表示的字段的值。 如果对象具有基本类型,则该值自动包装在对象中。 声明 (Declaration) 以下是java.lang.reflect.Field.get(Object obj)方法的声明。 public Object get(Object obj)

  • 我正在从我的db获取数据,我想根据需要循环 我正在从我的数据库中获取对象数组,我想通过一些更改将其转换为对象 我的数据 我想把它转换成如下-:

  • 问题内容: 我正在尝试从指定的URL返回JSON数据,但是当警报弹出时,它仅显示[object Object](我意识到object对象实际上不是错误)。 我想在警报中吐出职位名称和其他字段 。我该怎么做呢? 这是我正在查看的JSON示例(完整文件包含大约30个帖子) 这是我正在使用的脚本。 任何帮助深表感谢。 问题答案: 试试这个:

  • 问题内容: [object Object]是JavaScript Object的默认字符串表示形式。 我会知道这是正义还是正义,但是为什么呢?为什么第一个单词是小写而第二个单词是大写?它是JSON还是JavaScript的一部分? 问题答案: 所有对象都有一个以格式显示内容的方法,其中type是对象类型。 当您在get上调用该对象时,并且在一个对象上调用该字符串时,您会得到该字符串,因为它基于Ob

  • Type: Object 对象函数的集合。 Function: Object.each 遍历一个对象。 语法: Object.each(obj, fn[, bind]); 参数: obj - (object)来遍历的对象。 fn - (function)来测试每个元件的功能。 bind - (object, optional)函数绑定到此对象执行(函数内部this指向到此对象)。 参数: fn 语