ForEach-Object 帮助信息

如下说明是翻译 : help ForEach-Object 产生的帮助信息 .
译者 : Edengundam( 马涛 )
 
ForEach-Object
 
摘要
对输入集合中每个对象执行操作 .
 
语法
ForEach-Object [-process] <ScriptBlock[]> [-inputObject <psobject>] [-begin <scriptblock>] [-end <scriptblock>] [<CommonParameters>]
 
详细描述
对输入集合中每个对象执行操作 . 输入对象可以从管道传递给 cmdlet 或通过 InputObject 参数指定 .
执行的操作通过提供共给 cmdlet Process 参数的代码块描述 . 代码块可以包含任意 Windows PowerShell 脚本 .
 
在脚本块中 , 当前输入对象使用 $_ 变量表示 .
 
除了能够为输入的每个对象指定一个进行操作的脚本块外 , 你还可以提供两个额外的脚本块 . 一个作为 Begin 参数的参数值 , 在处理任何输入对象之前运行 . 另一个作为 End 参数的参数值 , 在处理完所有输入对象后执行 .
 
脚本块求值的结果 ( 包括由 Begin End 产生的 ) 沿着管道继续传递 .
 
参数
 
-process <ScriptBlock[]>
指定为每个输入对象进行处理的脚本块 .
 
强制参数 ?
true
参数位置 ?
1
默认值
 
允许从管道绑定输入 ?
false
允许通配符扩展 ?
false
 
-inputObject <psobject>
接受一个对象 , 并将其作为 Process 参数指定的脚本块进行操作的对象 . 输入一个包含对象的变量 , 或者一个能够产生对象的命令或表达式 .
 
强制参数 ?
false
参数位置 ?
named
默认值
 
允许从管道绑定输入 ?
true ( 根据值 )
允许通配符扩展 ?
false
 
-begin <scriptblock>
指定用于在处理任何输入对象之前运行的脚本块 .
 
强制参数 ?
false
参数位置 ?
named
默认值
 
允许从管道绑定输入 ?
false
允许通配符扩展 ?
false
 
-end <scriptblock>
指定用于在处理完所有输入对象之后执行的脚本块 .
 
强制参数 ?
false
参数位置 ?
named
默认值
 
允许从管道绑定输入 ?
false
允许通配符扩展 ?
false
 
< 公共参数 >
此命令支持公共参数 : -Verbose, -Debug, -ErrorAction, -ErrorVariable -OutVariable. 更多信息 , 输入 , "get-help about_commonparameters".
 
输入类型
Object
 
注意
 
更多信息 , 输入 "Get-Help ForEach-Object -detailed". 需要技术信息 , 输入 "Get-Help ForEach-Object -full".
 
如果需要为该命令提供多个参数 , 请使用逗号进行分隔 . 例如 , "<parameter-name> <value1>, <value2>".
 
1
 
C:/PS>30000,56798,12432 | foreach-object -process {$_/1024}
 
此命令接受一个由整数构成的数组 , 并将其中每个元素除以 1024, 并将结果输出 .
 
2
 
C:/PS>get-childitem C:/ | foreach-object -process { $_.length / 1024 }
 
此命令取得 C 驱动下的文件和目录 , 并显示它们的占用空间大小 . 数值 0 表示目录没有文件大小这一参数 ( 译者注 : 实际上长度为 0 的文件 , 也会导致一样的结果 , 因此不能将文件大小为 0 作为判断文件和目录的依据 ).
 
3
 
C:/PS>$events = get-eventlog -logname system -newest 1000
$events |
foreach-object -begin {get-date}
-process {out-file -filepath events.txt -append -inputobject $_.message}
-end {get-date}
 
此命令取得最近 1000 项系统日志信息 , 并将它们存储到变量 $events . 接下来将这些日志通过管道传递给 ForEach-Object cmdlet. 参数 Begin 显示当前时间和日期 . 下一个参数是 Process, 利用 Out-File cmdlet 创建一个名叫 events.txt 的文本文件 , 并将每个时间的 message 属性信息存储到该文件中 . 最后是 End 参数 , 它被用来显示当所有处理结束时的日期和时间 .
 
4
 
C:/PS>get-itemproperty -path hkcu:/Network/* |
 foreach-object {set-itemproperty -path $_.pspath -name RemotePath
-value $_.RemotePath.ToUpper();}
 
此命令通过使用 Set-ItemProperty 更新一组注册表项 . 注册表项指定的是计算机上映射网络驱动器的 UNC 路径 . 此命令改变 UNC 路径中的字母为大写字母 . 实际情境中 , 你可能需要改变服务器名称或路径中某个部分 .
 
由于 Set-ItemProperty cmdlet 一次更新一个属性 , ForEach-Object cmdlet 将会针对每个需要更改的属性 ( 这个例子中就是 : 注册表项 ) 调用一次 Set-ItemProperty. 注册表项的名称是 RemotePath, 位于 HKCU/Network/<mapped drive letter> 位置 . 通过使用 Get-ItemProperty cmdlet 取得表示这些注册表项的对象 , 并将它们通过管道作为输入传递给 ForEach-Object. ForEach-Object 中调用 Set-ItemProperty , 变量 $_ 持有一个正在处理的注册表项对象的引用 . 属性 PSPath 的值是保存当前项的注册表项 . RemotePath 属性的类型为 System.String, 因此它包含了 ToUpper 方法 , 用来将项的内容转换为大写形式 .
 
相关链接
Where-Object
Compare-Object
Group-Object
Select-Object
Sort-Object
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值