Powershell缩略.NET的类型


支持所有版本。
通常Powershell中的.Net 类型我们都使用缩略格式。

PS> [System.Management.Automation.LanguagePrimitives]::ConvertTypeNameToPSTypeName("System.String")
[string]

PS> [System.Management.Automation.LanguagePrimitives]::ConvertTypeNameToPSTypeName("System.Int32")
[int]

PS> [System.Management.Automation.LanguagePrimitives]::ConvertTypeNameToPSTypeName("System.Management.ManagementObject")
[wmi]

PS> [System.Management.Automation.LanguagePrimitives]::ConvertTypeNameToPSTypeName("System.DirectoryServices.DirectoryEntry")
[adsi]

PS>  

那反过来,我们想查看短类型对应的真实.NET类型呢?

PS> [string].FullName
System.String

PS> [int].FullName
System.Int32

PS> [wmi].FullName
System.Management.ManagementObject

PS> [adsi].FullName
System.DirectoryServices.DirectoryEntry

PS>

其结果,是无论什么时候,PowerShell遇到一个8位无符号整形数值,都会自动把它转换成Byte类型。这个完整的逻辑由ConvertTypeNameToPSTypeName()来处理。PowerShell内部使用了一个查询表来转换特定的数据类型。

$field = [System.Management.Automation.LanguagePrimitives].GetField('nameMap', 'NonPublic,Static')
$field.GetValue([System.Management.Automation.LanguagePrimitives])

映射如下:

Key            Value
---            -----
SInt8          SByte
UInt8          Byte
SInt16         Int16
UInt16         UInt16
SInt32         Int32
UInt32         UInt32
SInt64         Int64
UInt64         UInt64
Real32         Single
Real64         double
Boolean        bool
String         string
DateTime       DateTime
Reference      CimInstance
Char16         char
Instance       CimInstance
BooleanArray   bool[]
UInt8Array     byte[]
SInt8Array     Sbyte[]
UInt16Array    uint16[]
SInt16Array    int64[]
UInt32Array    UInt32[]
SInt32Array    Int32[]
UInt64Array    UInt64[]
SInt64Array    Int64[]
Real32Array    Single[]
Real64Array    double[]
Char16Array    char[]
DateTimeArray  DateTime[]
StringArray    string[]
ReferenceArray CimInstance[]
InstanceArray  CimInstance[]
Unknown        UnknownType

原文链接:Simplifying .NET Types

×用微信扫描并分享
本文链接: https://www.pstips.net/simplifying-net-types.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注