3
为什么Powershell默默地将带有一项的字符串数组转换为字符串
考虑以下Powershell脚本,该脚本在C:\中搜索名称为“ og”的文件夹: PS C:\>(ls |%{$ _。Name} |?{$ _。Contains(“ og”)}) 性能日志 程序文件 setup.log 现在,我缩小搜索范围以仅获取一项: PS C:\>(ls |%{$ _。Name} |?{$ _。Contains(“ Prog”)}) 程序文件 奇怪的是,第一个操作产生一个数组,而第二个操作(IMHO在语义上是相同的操作,因此它应产生相同类型的结果)产生一个字符串。在以下结果中可以看出: PS C:\>(ls |%{$ _。Name} |?{$ _。Contains(“ og”)}))。长度 3 PS C:\>(ls |%{$ _。Name} |?{$ _。Contains(“ Prog”)}))。长度 13 这可能非常令人讨厌,因为与“ og”匹配的文件夹显然比与“ prog”匹配的文件夹少。 显然,PowerShell隐式地将单个项目数组“拆箱”到单个对象,并且我们永远都不会得到长度为1的数组。似乎每次我想对通过管道传递的结果进行计数时,我都必须检查是否m是否处理数组。 如何防止这种情况发生?您如何处理?
33
powershell
pipe