.net - example - powershell windows 7
¿Dónde puedo encontrar una lista de aceleradores de tipo.NET de Powershell? (5)
@ Noldorin tiene una buena lista de algunos de los aceleradores de tipo, con algunos.
PowerShell también le permite usar tipos literales para lanzar objetos, llamar a métodos estáticos, acceder a propiedades estáticas, reflexionar y cualquier otra cosa que pueda hacer con una instancia de un objeto System.Type.
Para usar un literal de tipo, solo debe incluir el nombre completo (espacio de nombres y nombre de clase) de la clase (o estructura o enumeración) (con un punto que separa el espacio de nombres y el nombre de la clase) entre corchetes como:
[System.Net.NetworkInformation.IPStatus]
PowerShell también proporcionará un "Sistema" líder. en su intento de resolver el nombre, por lo que no necesita usarlo explícitamente si está usando algo en un espacio de nombres del Sistema *.
[Net.NetworkInformation.IPStatus]
En PowerShell puede usar [xml] para referirse a [System.Xml.XmlDocument]. ¿Sabes dónde puedo encontrar una lista de estos aceleradores de tipo?
¿Son estos aceleradores específicos de PowerShell o .NET?
Aquí hay una lista más completa:
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
Consulte la sección titulada Alias de nombre de tipo en esta publicación de blog . Creo que esta es una lista completa de los alias.
PowerShell Type Alias Corresponding .NET Type [int] System.Int32 [int[]] System.Int32[] [long] System.Int64 [long[]] System.Int64[] [string] System.String [string[]] System.String[] [char] System.Char [char[]] System.Char[] [bool] System.Boolean [bool[]] System.Boolean[] [byte] System.Byte [byte[]] System.Byte[] [double] System.Double [double[]] System.Double[] [decimal] System.Decimal [decimal[]] System.Decimal[] [float] System.Single [single] System.Single [regex] System.Text.RegularExpression.Regex [array] System.Array [xml] System.Xml.XmlDocument [scriptblock] System.Management.Automation.ScriptBlock [switch] System.Management.Automation.SwitchParameter [hashtable] System.Collections.Hashtable [psobject] System.Management.Automation.PSObject [type] System.Type [type[]] System.Type[]
Desde que se hizo esta pregunta y se respondió hace cuatro años, PowerShell ha seguido evolucionando. La respuesta concisa de @KeithHill desafortunadamente ya no funciona. Hice un poco de investigación y descubrí que la clase requerida está un poco menos expuesta. En el lado positivo, la lista de aceleradores de tipo ahora se puede mostrar con solo una línea de código ...
[psobject].assembly.gettype("System.Management.Automation.TypeAccelerators")::Get
... atribuido a Jaykul en esta publicación de Connect .
Aquí hay una salida parcial:
Key Value --- ----- Alias System.Management.Automation.AliasAttribute AllowEmptyCollection System.Management.Automation.AllowEmptyCollectionAttribute AllowEmptyString System.Management.Automation.AllowEmptyStringAttribute AllowNull System.Management.Automation.AllowNullAttribute array System.Array bool System.Boolean byte System.Byte char System.Char CmdletBinding System.Management.Automation.CmdletBindingAttribute datetime System.DateTime decimal System.Decimal adsi System.DirectoryServices.DirectoryEntry adsisearcher System.DirectoryServices.DirectorySearcher double System.Double float System.Single single System.Single guid System.Guid hashtable System.Collections.Hashtable int System.Int32 . . .
2014.03.15 Actualización
A partir de la versión 3.1.0 de PowerShell Community Extensions (PSCX), ahora puede usar un acelerador de tipos para enumerar todos los aceleradores de tipos y simplemente invocar esto:
[accelerators]::get
La forma definitiva es hacer lo que Oisin demuestra en esta excelente publicación del blog :
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
...
Tenga en cuenta que debe agregar el nuevo acelerador de ''aceleradores'' al diccionario porque el tipo TypeAccelerators no es público. Es increíble lo que puedes hacer con .NET Reflector y mucho tiempo libre. :-) ¡Oisin rockea!