直接引用Powershell2.0中的属性 [英] Directly Referencing Properties in Powershell 2.0
本文介绍了直接引用Powershell2.0中的属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在今天早上编写的脚本中遇到了一个错误,在该脚本中,我没有从选择字符串表达式获得输出。经过一段时间的尝试后,我意识到这个表达式不会在v2.0中返回匹配的值,而会在我最初编写它的v4.0中返回。
($log | Select-String "[CIsoCreator] Creating iso file" -AllMatches | Select-Object -ExpandProperty line -Last 1 | Select-String "([A-Z]:)(.*\)*.*.iso").matches.value
在尝试了几种方法后,我最终得到了它,它确实按预期返回。
($log | Select-String "[CIsoCreator] Creating iso file" -AllMatches | Select-Object -ExpandProperty line -Last 1 | Select-String "([A-Z]:)(.*\)*.*.iso").matches | select -expandproperty value
在我看来,v2.0中有一些不同的规则来管理何时可以直接引用属性,但我一直找不到提到这一点的地方。
有没有人知道这在不同版本之间是如何工作的?
推荐答案
这是由于PowerShell3.0版中引入的语言行为更改-从"What's new in PowerShell 3.0" release notes:
Windows PowerShell语言增强
Windows PowerShell3.0包括许多旨在简化其语言的功能, 更容易使用,并避免常见错误。改进措施包括 属性枚举,标量对象上的计数和长度属性, 新的重定向操作符、$Using Scope修饰符、PSItem Automatic 变量、灵活的脚本格式、变量的属性 简化的属性参数、数字命令名称、 停止解析运算符、改进的数组溅射、新的位运算符 有序词典、PSCustomObject强制转换和改进 基于注释的帮助。
(我添加的重点)
属性枚举允许.
引用运算符解析数组表达式的各个成员的属性,即使数组本身没有这样的属性:
$Things = 1..3 |%{ New-Object psobject -Property @{Prop = $_} }
$Things.Prop # Starting with version 3.0, this outputs the array 1,2,3
# In PowerShell version 2.0, this will throw an error
# because [Object[]] ($Things) has no such property
这篇关于直接引用Powershell2.0中的属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文