acerca de Propiedades
Breve descripción
Describe cómo usar las propiedades de los objetos en PowerShell.
Descripción larga
PowerShell utiliza colecciones estructuradas de información llamadas objetos para representar los elementos en los almacenes de datos o el estado de la computadora. Normalmente, trabaja con objetos que forman parte de Microsoft .NET Framework, pero también puede crear objetos personalizados en PowerShell.
La asociación entre un artículo y su objeto es muy estrecha. Cuando cambias un objeto, normalmente cambias el elemento que representa. Por ejemplo, cuando obtienes un archivo en PowerShell, no obtienes el archivo real. En su lugar, obtienes un objeto FileInfo que representa el archivo. Cuando cambia el objeto FileInfo, el archivo también cambia.
La mayoría de los objetos tienen propiedades. Las propiedades son los datos asociados con un objeto. Los diferentes tipos de objetos tienen diferentes propiedades. Por ejemplo, un objeto FileInfo, que representa un archivo, tiene una propiedad IsReadOnly que contiene $True si el archivo tiene el atributo de solo lectura. y $False si no es así. Un objeto DirectoryInfo, que representa un directorio del sistema de archivos, tiene una propiedad Parent que contiene la ruta al directorio principal.
Propiedades del objeto
Para obtener las propiedades de un objeto, utilice el cmdlet Get-Member. Por ejemplo, para obtener las propiedades de un objeto FileInfo, utilice el cmdlet Get-ChildItem para obtener el objeto FileInfo que representa un archivo. Luego, utilice un operador de canalización (|) para enviar el objeto FileInfo a Get-Member. El siguiente comando obtiene el archivo pwsh.exe y lo envía a Get-Member. La variable automática $PSHOME contiene la ruta del directorio de instalación de PowerShell.
Get-ChildItem $PSHOME\pwsh.exe | Get-Member
La salida del comando enumera los miembros del objeto FileInfo. Los miembros incluyen tanto propiedades como métodos. Cuando trabajas en PowerShell, tienes acceso a todos los miembros de los objetos.
Para obtener solo las propiedades de un objeto y no los métodos, utilice el parámetro MemberType del cmdlet Get-Member con un valor de Property. como se muestra en el siguiente ejemplo.
Get-ChildItem $PSHOME\pwsh.exe | Get-Member -MemberType Property
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
Attributes Property System.IO.FileAttributes Attributes {get;set;}
CreationTime Property System.DateTime CreationTime {get;set;}
CreationTimeUtc Property System.DateTime CreationTimeUtc {get;set;}
Directory Property System.IO.DirectoryInfo Directory {get;}
DirectoryName Property System.String DirectoryName {get;}
Exists Property System.Boolean Exists {get;}
Extension Property System.String Extension {get;}
FullName Property System.String FullName {get;}
IsReadOnly Property System.Boolean IsReadOnly {get;set;}
LastAccessTime Property System.DateTime LastAccessTime {get;set;}
LastAccessTimeUtc Property System.DateTime LastAccessTimeUtc {get;set;}
LastWriteTime Property System.DateTime LastWriteTime {get;set;}
LastWriteTimeUtc Property System.DateTime LastWriteTimeUtc {get;set;}
Length Property System.Int64 Length {get;}
Name Property System.String Name {get;}
Después de encontrar las propiedades, puede usarlas en sus comandos de PowerShell.
Valores de propiedad
Aunque cada objeto de un tipo específico tiene las mismas propiedades, los valores de esas propiedades describen el objeto en particular. Por ejemplo, cada objeto FileInfo tiene una propiedad CreationTime, pero el valor de esa propiedad difiere para cada archivo.
La forma más común de obtener los valores de las propiedades de un objeto es utilizar el operador de acceso a miembros (.). Escriba una referencia al objeto, como una variable que contenga el objeto o un comando que obtenga el objeto. Luego, escriba el operador (.) seguido del nombre de la propiedad.
Por ejemplo, el siguiente comando muestra el valor de la propiedad CreationTime del archivo pwsh.exe. El comando Get-ChildItem devuelve un objeto FileInfo que representa el archivo pwsh.exe. El comando está entre paréntesis para garantizar que se ejecute antes de acceder a cualquier propiedad.
(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Tuesday, June 14, 2022 5:17:14 PM
También puede guardar un objeto en una variable y luego obtener sus propiedades utilizando el método de acceso de miembro (.), como se muestra en el siguiente ejemplo:
$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Tuesday, June 14, 2022 5:17:14 PM
También puede utilizar los cmdlets Select-Object y Format-List para mostrar los valores de propiedad de un objeto. Select-Object y Format-List tienen cada uno un parámetro Property. Puede utilizar el parámetro Propiedad para especificar una o más propiedades y sus valores. O puede utilizar el carácter comodín (*) para representar todas las propiedades.
Por ejemplo, el siguiente comando muestra los valores de todas las propiedades del archivo pwsh.exe.
Get-ChildItem $PSHOME\pwsh.exe | Format-List -Property *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview\pwsh.exe
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Program Files\PowerShell\7-preview
PSChildName : pwsh.exe
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
Mode : -a---
ModeWithoutHardLink : -a---
VersionInfo : File: C:\Program Files\PowerShell\7-preview\pwsh.exe
InternalName: pwsh.dll
OriginalFilename: pwsh.dll
FileVersion: 7.3.0.5
FileDescription: pwsh
Product: PowerShell
ProductVersion: 7.3.0-preview.5 SHA: cfc237ac85cf24fa760923ace568201c8f3256aa
Debug: False
Patched: False
PreRelease: False
PrivateBuild: False
SpecialBuild: False
Language: Language Neutral
BaseName : pwsh
ResolvedTarget : C:\Program Files\PowerShell\7-preview\pwsh.exe
Target :
LinkType :
Length : 285088
DirectoryName : C:\Program Files\PowerShell\7-preview
Directory : C:\Program Files\PowerShell\7-preview
IsReadOnly : False
FullName : C:\Program Files\PowerShell\7-preview\pwsh.exe
Extension : .exe
Name : pwsh.exe
Exists : True
CreationTime : 6/14/2022 5:17:14 PM
CreationTimeUtc : 6/14/2022 10:17:14 PM
LastAccessTime : 7/18/2022 11:32:06 AM
LastAccessTimeUtc : 7/18/2022 4:32:06 PM
LastWriteTime : 6/14/2022 5:17:14 PM
LastWriteTimeUtc : 6/14/2022 10:17:14 PM
LinkTarget :
Attributes : Archive
Propiedades estáticas
Puede utilizar las propiedades estáticas de las clases .NET en PowerShell. Las propiedades estáticas son propiedades de clase, a diferencia de las propiedades estándar, que son propiedades de un objeto.
Para obtener las propiedades estáticas de una clase, utilice el parámetro Static del cmdlet Get-Member. Por ejemplo, el siguiente comando obtiene las propiedades estáticas de la clase System.DateTime.
Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTime
Name MemberType Definition
---- ---------- ----------
MaxValue Property static datetime MaxValue {get;}
MinValue Property static datetime MinValue {get;}
Now Property datetime Now {get;}
Today Property datetime Today {get;}
UtcNow Property datetime UtcNow {get;}
Para obtener el valor de una propiedad estática, utilice la siguiente sintaxis.
[<ClassName>]::<Property>
Por ejemplo, el siguiente comando obtiene el valor de la propiedad estática UtcNow de la clase System.DateTime.
[System.DateTime]::UtcNow
Enumeración de acceso de miembros
A partir de PowerShell 3.0, cuando se utiliza el operador de acceso de miembros (.) para acceder a una propiedad que no existe en una colección de listas, PowerShell enumera automáticamente los elementos de la colección y devuelve el valor de la propiedad de cada artículo. Para obtener más información, consulte about_Member-Access_Enumeration.
Ejemplos
Este comando devuelve el valor de la propiedad DisplayName de cada servicio que Get-Service devuelve.
(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...
Todas las colecciones tienen una propiedad Count que devuelve el número de objetos de la colección.
(Get-Service).Count
176
A partir de PowerShell 3.0, puede obtener la propiedad Count o Length de objetos singleton que no son colecciones.
(Get-Service Audiosrv).Count
1
Sin embargo, algunos objetos tienen una propiedad Longitud. Por ejemplo, la Longitud de una cadena es el número de caracteres de la cadena. La propiedad Count es el número de instancias del objeto.
PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1
Si existe una propiedad en los objetos individuales y en la colección, solo se devuelve la propiedad de la colección.
$collection = @(
[pscustomobject]@{length = "foo"}
[pscustomobject]@{length = "bar"}
)
# PowerShell returns the collection's Length.
$collection.length
2
Ver también
- acerca de_objetos
- about_Member-Access_Enumeration
- acerca de_métodos
- Format-List
- Get-Member
- Select-Object