18

在 PowerShell 中,您可以使用 [xml] 来表示 [System.Xml.XmlDocument]。你知道我在哪里可以找到这些类型加速器的列表吗?

这些加速器是否特定于 PowerShell 或 .NET?

4

5 回答 5

13

自从四年前提出并回答了这个问题以来,PowerShell 一直在不断发展。不幸的是,@KeithHill 的简洁答案不再有效。我做了一点挖掘,发现必需的类只是少了一点暴露。从好的方面来说,类型加速器列表现在可以仅用这一代码显示......

[psobject].assembly.gettype("System.Management.Automation.TypeAccelerators")::Get

...在此Connect 帖子中归功于 Jaykul 。

这是部分输出:

核心价值
--- -----
别名 System.Management.Automation.AliasAttribute
AllowEmptyCollection System.Management.Automation.AllowEmptyCollectionAttribute
AllowEmptyString System.Management.Automation.AllowEmptyStringAttribute
AllowNull System.Management.Automation.AllowNullAttribute
数组 System.Array
bool System.Boolean
字节系统.字节
字符系统.Char
CmdletBinding System.Management.Automation.CmdletBindingAttribute
日期时间 System.DateTime
十进制 System.Decimal
adsi System.DirectoryServices.DirectoryEntry
adsisearcher System.DirectoryServices.DirectorySearcher
双系统.双
浮动 System.Single
单系统.单
引导系统.Guid
哈希表 System.Collections.Hashtable
int System.Int32
. . .

2014.03.15 更新

PowerShell Community Extensions (PSCX) 版本 3.1.0 开始,您现在可以使用类型加速器列出所有类型加速器并调用它:

[accelerators]::get
于 2013-06-05T19:08:45.060 回答
12

最终的方法是做 Oisin 在这篇出色的博客文章中所展示的内容:

PS> $acceleratorsType = [type]::gettype("System.Management.Automation.TypeAccelerators")
PS> $acceleratorsType

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
False    False    TypeAccelerators                         System.Object


PS> $acceleratorsType::Add("accelerators", $acceleratorsType)
PS> [accelerators]::Get

Key                                                         Value
---                                                         -----
int                                                         System.Int32
...

请注意,您必须将新的“加速器”加速器添加到字典中,因为 TypeAccelerators 类型不是公共的。使用 .NET Reflector 和大量空闲时间可以做的事情令人惊叹。:-) 你摇滚 Oisin!

于 2009-07-18T19:59:23.223 回答
8

请参阅此博客文章中标题为类型名称别名的部分。我相信这是一个完整的别名列表。

PowerShell 类型别名对应的 .NET 类型
[int] System.Int32
[int[]] System.Int32[]
[长] System.Int64
[long[]] System.Int64[]
[字符串] System.String
[字符串[]] 系统.字符串[]
[字符] System.Char
[char[]] System.Char[]
[bool] System.Boolean
[bool[]] System.Boolean[]
[字节] System.Byte
[字节[]] System.Byte[]
[双] System.Double
[双[]] 系统.双[]
[十进制] System.Decimal
[十进制[]] System.Decimal[]
[浮动] System.Single
[单] System.Single
[正则表达式] System.Text.RegularExpression.Regex
[数组] System.Array
[xml] System.Xml.XmlDocument
[脚本块] System.Management.Automation.ScriptBlock
[开关] System.Management.Automation.SwitchParameter
[哈希表] System.Collections.Hashtable
[psobject] System.Management.Automation.PSObject
[类型] System.Type
[类型[]] 系统类型[]
于 2009-07-17T20:01:18.957 回答
3

@Noldorin列出了一些类型加速器,其中有一些。

PowerShell 还允许您使用类型文字来转换对象、调用静态方法、访问静态属性、反射以及您可能对 System.Type 对象的实例执行的任何其他操作。

为了使用类型文字,您只需将类(或结构或枚举)的全名(命名空间和类名)括在括号中(用句点分隔命名空间和类名),如:

[System.Net.NetworkInformation.IPStatus]

PowerShell 还将提供一个领先的“系统”。在尝试解析名称时,因此如果您在 System* 命名空间中使用某些东西,则无需显式使用它。

[Net.NetworkInformation.IPStatus]

Oisin Grehan(PowerShell MVP)还有一篇关于创建自己的类型加速器的博文

于 2009-07-17T22:35:08.977 回答
1

这是一个更完整的列表:

Key                   Value
---                   -----
adsi                  System.DirectoryServices.DirectoryEntry
adsisearcher          System.DirectoryServices.DirectorySearcher
array                 System.Array
bigint                System.Numerics.BigInteger
bool                  System.Boolean
byte                  System.Byte
char                  System.Char
cimclass              Microsoft.Management.Infrastructure.CimClass
cimconverter          Microsoft.Management.Infrastructure.CimConverter
ciminstance           Microsoft.Management.Infrastructure.CimInstance
cimtype               Microsoft.Management.Infrastructure.CimType
cultureinfo           System.Globalization.CultureInfo
datetime              System.DateTime
decimal               System.Decimal
double                System.Double
float                 System.Single
guid                  System.Guid
hashtable             System.Collections.Hashtable
initialsessionstate   System.Management.Automation.Runspaces.InitialSessionState
int                   System.Int32
int16                 System.Int16
int32                 System.Int32
int64                 System.Int64
ipaddress             System.Net.IPAddress
long                  System.Int64
mailaddress           System.Net.Mail.MailAddress
powershell            System.Management.Automation.PowerShell
psaliasproperty       System.Management.Automation.PSAliasProperty
pscredential          System.Management.Automation.PSCredential
pscustomobject        System.Management.Automation.PSObject
pslistmodifier        System.Management.Automation.PSListModifier
psmoduleinfo          System.Management.Automation.PSModuleInfo
psnoteproperty        System.Management.Automation.PSNoteProperty
psobject              System.Management.Automation.PSObject
psprimitivedictionary System.Management.Automation.PSPrimitiveDictionary
psscriptmethod        System.Management.Automation.PSScriptMethod
psscriptproperty      System.Management.Automation.PSScriptProperty
psvariable            System.Management.Automation.PSVariable
psvariableproperty    System.Management.Automation.PSVariableProperty
ref                   System.Management.Automation.PSReference
regex                 System.Text.RegularExpressions.Regex
runspace              System.Management.Automation.Runspaces.Runspace
runspacefactory       System.Management.Automation.Runspaces.RunspaceFactory
sbyte                 System.SByte
scriptblock           System.Management.Automation.ScriptBlock
securestring          System.Security.SecureString
single                System.Single
string                System.String
switch                System.Management.Automation.SwitchParameter
timespan              System.TimeSpan
type                  System.Type
uint16                System.UInt16
uint32                System.UInt32
uint64                System.UInt64
uri                   System.Uri
version               System.Version
void                  System.Void
wmi                   System.Management.ManagementObject
wmiclass              System.Management.ManagementClass
wmisearcher           System.Management.ManagementObjectSearcher
xml                   System.Xml.XmlDocument
于 2016-04-11T19:20:13.677 回答