Compartir a través de


about_Properties

Descripción breve

Describe cómo usar propiedades de objeto en PowerShell.

Descripción larga

PowerShell usa colecciones estructuradas de información denominada objetos para representar los elementos de los almacenes de datos o el estado del equipo. 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 elemento y su objeto está muy cerca. Al cambiar un objeto, normalmente se cambia el elemento que representa. Por ejemplo, cuando se obtiene un archivo en PowerShell, no se obtiene el archivo real. En su lugar, obtendrá un objeto FileInfo que representa el archivo. Al cambiar el objeto FileInfo, el archivo también cambia.

La mayoría de los objetos tienen propiedades. Las propiedades son los datos asociados a un objeto . Los distintos tipos de objeto tienen propiedades diferentes. 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 lo hace. Un objeto DirectoryInfo , que representa un directorio del sistema de archivos, tiene una propiedad Parent que contiene la ruta de acceso al directorio primario.

Propiedades de objeto

Para obtener las propiedades de un objeto, use el Get-Member cmdlet . Por ejemplo, para obtener las propiedades de un objeto FileInfo , use el Get-ChildItem cmdlet para obtener el objeto FileInfo que representa un archivo. A continuación, use un operador de canalización (|) para enviar el objeto FileInfo a Get-Member. El comando siguiente obtiene el powershell.exe archivo y lo envía a Get-Member. La $PSHOME variable automática contiene la ruta de acceso del directorio de instalación de PowerShell.

Get-ChildItem $PSHOME\powershell.exe | Get-Member

La salida del comando enumera los miembros del objeto FileInfo . Los miembros incluyen propiedades y métodos. Al trabajar en PowerShell, tiene acceso a todos los miembros de los objetos.

Para obtener solo las propiedades de un objeto y no los métodos, use el parámetro MemberType del Get-Member cmdlet con un valor de Property, como se muestra en el ejemplo siguiente.

Get-ChildItem $PSHOME\powershell.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 los 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 determinado. Por ejemplo, cada objeto FileInfo tiene una propiedad CreationTime , pero el valor de esa propiedad difiere para cada archivo.

La manera más común de obtener los valores de las propiedades de un objeto es usar el operador de acceso a miembros (.). Escriba una referencia al objeto, como una variable que contenga el objeto o un comando que obtiene el objeto . A continuación, escriba el operador (.) seguido del nombre de propiedad.

Por ejemplo, el siguiente comando muestra el valor de la propiedad CreationTime del powershell.exe archivo. El Get-ChildItem comando devuelve un objeto FileInfo que representa el powershell.exe fileobjeto . El comando se incluye entre paréntesis para asegurarse de que se ejecuta antes de que se tenga acceso a las propiedades.

(Get-ChildItem $PSHOME\powershell.exe).CreationTime
Saturday, June 5, 2021 7:07:00 AM

También puede guardar un objeto en una variable y, a continuación, obtener sus propiedades mediante el método de acceso a miembros (.), como se muestra en el ejemplo siguiente:

$a = Get-ChildItem $PSHOME\powershell.exe
$a.CreationTime
Wednesday, January 24, 2024 1:18:29 AM

También puede usar los Select-Object cmdlets y Format-List para mostrar los valores de propiedad de un objeto. Select-Object y Format-List cada uno tiene un parámetro Property . Puede usar el parámetro Property para especificar una o varias propiedades y sus valores. O bien, puede usar el carácter comodín (*) para representar todas las propiedades.

Por ejemplo, el siguiente comando muestra los valores de todas las propiedades del powershell.exe archivo.

Get-ChildItem $PSHOME\powershell.exe | Format-List -Property *
PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System32\WindowsPowerShell\v1.0
PSChildName       : powershell.exe
PSDrive           : C
PSProvider        : Microsoft.PowerShell.Core\FileSystem
PSIsContainer     : False
Mode              : -a----
VersionInfo       : File:             C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
                    InternalName:     POWERSHELL
                    OriginalFilename: PowerShell.EXE.MUI
                    FileVersion:      10.0.22621.1 (WinBuild.160101.0800)
                    FileDescription:  Windows PowerShell
                    Product:          Microsoft® Windows® Operating System
                    ProductVersion:   10.0.22621.1
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         English (United States)

BaseName          : powershell
Target            : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-exe_31bf3856ad364e35_10.0.22621.3085_none_492
                    e8ee57da24e0e\powershell.exe}
LinkType          : HardLink
Name              : powershell.exe
Length            : 450560
DirectoryName     : C:\Windows\System32\WindowsPowerShell\v1.0
Directory         : C:\Windows\System32\WindowsPowerShell\v1.0
IsReadOnly        : False
Exists            : True
FullName          : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Extension         : .exe
CreationTime      : 1/24/2024 1:18:29 AM
CreationTimeUtc   : 1/24/2024 7:18:29 AM
LastAccessTime    : 1/3/2025 1:36:20 PM
LastAccessTimeUtc : 1/3/2025 7:36:20 PM
LastWriteTime     : 1/24/2024 1:18:29 AM
LastWriteTimeUtc  : 1/24/2024 7:18:29 AM
Attributes        : Archive

Propiedades estáticas

Puede usar las propiedades estáticas de las clases de .NET en PowerShell. Las propiedades estáticas son propiedades de la clase , a diferencia de las propiedades estándar, que son propiedades de una instancia de objeto.

Para obtener las propiedades estáticas de una clase, use el parámetro Static del Get-Member cmdlet . Por ejemplo, el siguiente comando obtiene las propiedades estáticas de la System.DateTime clase .

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, use la sintaxis siguiente.

[<ClassName>]::<Property>

Por ejemplo, el siguiente comando obtiene el valor de la propiedad estática UtcNow de la System.DateTime clase .

[System.DateTime]::UtcNow

Enumeración de acceso a miembros

A partir de PowerShell 3.0, cuando se usa el operador de acceso a miembros (.) para acceder a una propiedad que no existe, PowerShell enumera automáticamente los elementos de la colección y devuelve el valor de la propiedad para cada elemento.

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
...

La mayoría de las colecciones de PowerShell tienen una propiedad Count que devuelve el número de elementos en la colección.

(Get-Service).Count
176

Si existe una propiedad en los objetos individuales y en la colección, solo se devuelve la propiedad de la colección.

PS> $collection = @(
     [pscustomobject]@{Length = "foo"}
     [pscustomobject]@{Length = "bar"}
)

# PowerShell returns the collection's Length.
$collection.Length
2

# Get the length property of each item in the collection.
PS> $collection.GetEnumerator().Length
foo
bar

Para obtener más información, consulte about_Member-Access_Enumeration.

Consulte también