PowerShell过滤纯字符串列表时Where-Object的最简语法是什么?
PowerShell 纯字符串列表过滤简化方案
存在更简洁的等价写法,无需编写脚本块即可实现和过滤对象属性一致的简洁语法,同时完全适配流式输入场景(包括函数动态返回的输出结果,不限制仅静态数组使用)。
你可以直接在Where-Object(别名?)的属性参数位使用$_指代当前管道输入的字符串本身,语法如下:
# 纯字符串列表过滤简化写法 $Names | ? $_ -Match "Smith"
该写法支持所有管道输入场景,比如针对返回字符串结果的函数,可以直接链式调用,不需要提前将结果存入静态数组:
# 适配函数输出的流式过滤示例 Get-AllUsername | ? $_ -Match "Smith"
补充说明
该特性是PowerShell 3.0及以上版本原生支持的Where-Object比较语法,当属性参数指定为$_时,会直接对当前管道对象本身执行条件判断,执行效率和脚本块写法完全一致。
内容的提问来源于stack exchange,提问作者Andrew Ducker
相关产品推荐
相关产品推荐

