about_Simplified_Syntax
简短说明
介绍为对象集合编写筛选器脚本的更简单且更自然的语言方法。
长说明
Windows PowerShell 3.0 中引入的简化语法使你无需使用脚本块即可生成一些筛选器命令。 简化语法更类似于自然语言,主要适用于通过管道传输到命令 Where-Object
和 ForEach-Object
及其相应别名 where
和 foreach
的对象集合。
可以对集合(最常见的是数组)的成员使用方法,而无需引用脚本块中的自动变量 $_
。
考虑以下两个调用:
标准语法
dir Cert:\LocalMachine\Root | where { $_.FriendlyName -eq 'Verisign' }
dir Cert:\ -Recurse | foreach { $_.GetKeyAlgorithm() }
简化语法
在简化语法下,作用于集合中对象成员的比较运算符被视为参数。 可以对集合中的对象调用方法,而无需引用脚本块中的自动变量 $_
。
将以下两个调用与前面示例中的调用进行比较:
dir Cert:\LocalMachine\Root | where FriendlyName -eq 'Verisign'
dir Cert:\ -Recurse | foreach GetKeyAlgorithm
虽然这两种语法都有效,但简化语法会返回结果,而无需引用脚本块中的自动变量 $_
。
方法名称 GetKeyAlgorithm
被视为 ForEach-Object
的参数。
第二个命令返回相同的结果但不会出现错误,因为简化语法不会尝试返回指定参数不适用的项的结果。
在此示例中,Process
属性 Description
作为成员名称参数传递给 ForEach-Object
命令。 结果是活动进程的说明。
Get-Process | foreach Description
在此示例中,DirectoryInfo
方法 GetFiles
作为 ForEach-Object
命令的成员名称参数传递。
使用搜索模式参数 .*
调用该方法。
结果是用户主目录中所有 Unix 风格隐藏文件的 FileInfo
记录。
Get-ChildItem /home -Directory | foreach GetFiles .*
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈