PowerShell中的ForEach-Object
对输入对象集合中的每个项目执行语句块。 这些对象通过管道传递,或通过使用-InputObject
参数指定。
使用PowerShell 3.0的启动版,以下是两种构造ForEach-Object
命令的方法:
语法1
ForEach-Object [-MemberName] <String> [-ArgumentList <Object[]>] [-Confirm] [-InputObject <PSObject>] [-WhatIf] [<CommonParameters>]
语法2
ForEach-Object [-Process] <ScriptBlock[]> [-Begin <ScriptBlock>] [-Confirm] [-End <ScriptBlock>] [-InputObject <PSObject>] [-RemainingScripts <ScriptBlock[]>] [-WhatIf] [<CommonParameters>]
以下是ForEach-Object
cmdlet中使用的一些参数:
-MemberName - 此参数用于指定调用方法和要获取的属性。
-ArgumentList - 此参数用于指定用于调用方法的参数数组。
-Confirm - 该参数在执行cmdlet之前提示进行确认。
-InputObject - 此参数用于指定输入对象。该cmdlet在每个输入对象上执行脚本块或操作语句。当在ForEach-Object
中使用此参数时,此参数的值将被视为单个对象。
-WhatIf - 此参数用于显示如果执行cmdlet将会发生的情况。该cmdlet将不会执行。
-Process - 此参数用于指定在每个输入对象上执行的操作。输入描述操作的脚本块。
-Begin - 此参数用于指定脚本块,该脚本块在cmdlet处理任何输入对象之前执行。
-End - 此参数用于指定脚本块,该脚本块在cmdlet处理所有输入对象之后执行。
-RemainingScripts - 此参数用于指定所有那些脚本块,-Process
参数不使用这些脚本块。
示例:访问E:
盘文件和文件夹
PS E:\xntutor.com\powershell> get-childitem -Path 'E:' | foreach-object {write-host $_} Program Files Program Files (x86) SnapPlugin softwares vhosts wamp64 WeChat worksp workspace xntutor.com xunleiDownloads XY 迅雷下载 hosts - 快捷方式.lnk HwMonitor.rp 服务器安装帐号.xlsx
在此示例中,我们使用管道符号(|
),该符号用于将get-childitem
的输出传递给ForEach-Object
命令。 最后使用write-host
命令显示传递的值。
在命令中,$_
是一个特殊变量,它处理通过管道传递的值。