PowerShell 技能连载 - Enum 之周: 枚举的自动转换
这周我们将关注枚举类型:它们是什么,以及如何利用它们。
当一个 Cmdlet 或者方法需要一个枚举值时,PowerShell 能毫无障碍地接受不完整的枚举名称。这个方法不为人知。例如这段代码将控制台的前景色改为灰色:
1 | PS> $host.UI.RawUI.ForegroundColor = 'Gray' |
这段代码将前景色改为白色:
1 | PS> $host.UI.RawUI.ForegroundColor = 'White' |
ForegroundColor
属性看上去是字符串类型的,但这并不是真相。它只能接受某些字符串。这个属性的类型实际上不是字符串型。它实际上是一个只接受某些字符串值的枚举型:
1 | PS> $host.UI.RawUI | Get-Member -Name ForegroundColor |
该属性实际上是 “System.ConsoleColor
“ 类型。当您传入一个类似 “Gray
“ 或 “White
“ 的字符串时,PowerShell 实际上在后台查询 System.ConsoleColor
类型可选的值,并将传入的字符串做转换。
一个不为人知的事实是:不需要严格的匹配。您可以用这种方法写:
1 | PS> $host.UI.RawUI.ForegroundColor = 'R' |
PowerShell 技能连载 - Enum 之周: 枚举的自动转换
http://blog.vichamp.com/2016/09/26/enum-week-auto-conversion-for-enums/