Partilhar via


about_Properties

Breve descrição

Descreve como usar propriedades de objeto no PowerShell.

Descrição longa

O PowerShell usa coleções estruturadas de informações chamadas objetos para representar os itens em armazenamentos de dados ou o estado do computador. Normalmente, você trabalha com objetos que fazem parte do Microsoft .NET Framework, mas também pode criar objetos personalizados no PowerShell.

A associação entre um item e seu objeto é muito próxima. Quando você altera um objeto, geralmente altera o item que ele representa. Por exemplo, quando você obtém um arquivo no PowerShell, não obtém o arquivo real. Em vez disso, você obtém um FileInfo objeto que representa o arquivo. Quando você altera o objeto FileInfo, o arquivo também é alterado.

A maioria dos objetos tem propriedades. Propriedades são os dados associados a um objeto. Diferentes tipos de objeto têm propriedades diferentes. Por exemplo, um objeto FileInfo, que representa um arquivo, tem uma propriedade IsReadOnly que contém $true se o arquivo tiver o atributo somente leitura e $false se não tiver. Um objeto DirectoryInfo, que representa um diretório do sistema de arquivos, tem uma propriedade Parent que contém o caminho para o diretório pai.

Propriedades do objeto

Para obter as propriedades de um objeto, use o cmdlet Get-Member. Por exemplo, para obter as propriedades de um objeto FileInfo, use o cmdlet Get-ChildItem para obter o objeto FileInfo que representa um arquivo. Em seguida, use um operador de pipeline (|) para enviar o objeto FileInfo para Get-Member. O comando a seguir obtém o arquivo pwsh.exe e o envia para Get-Member. A variável automática $PSHOME contém o caminho do diretório de instalação do PowerShell.

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

A saída do comando lista os membros do FileInfo objeto. Os membros incluem propriedades e métodos. Quando você trabalha no PowerShell, tem acesso a todos os membros dos objetos.

Para obter apenas as propriedades de um objeto e não os métodos, use o parâmetro MemberType do cmdlet Get-Member com um valor de Property, conforme mostrado no exemplo a seguir.

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;}

Depois de encontrar as propriedades, você pode usá-las em seus comandos do PowerShell.

Valores de propriedade

Embora cada objeto de um tipo específico tenha as mesmas propriedades, os valores dessas propriedades descrevem o objeto específico. Por exemplo, cada objeto FileInfo tem uma propriedade CreationTime, mas o valor dessa propriedade difere para cada arquivo.

A maneira mais comum de obter os valores das propriedades de um objeto é usar o operador de acesso de membro (.). Digite uma referência ao objeto, como uma variável que contém o objeto ou um comando que obtém o objeto. Em seguida, digite o operador (.) seguido pelo nome da propriedade.

Por exemplo, o comando a seguir exibe o valor da propriedade CreationTime do arquivo pwsh.exe. O comando Get-ChildItem retorna um objeto FileInfo que representa o pwsh.exe file. O comando é colocado entre parênteses para garantir que é executado antes de qualquer propriedade ser acessada.

(Get-ChildItem $PSHOME\pwsh.exe).CreationTime
Tuesday, June 14, 2022 5:17:14 PM

Você também pode salvar um objeto em uma variável e, em seguida, obter suas propriedades usando o método de acesso de membro (.), conforme mostrado no exemplo a seguir:

$a = Get-ChildItem $PSHOME\pwsh.exe
$a.CreationTime
Wednesday, November 13, 2024 10:12:26 PM

Você também pode usar os cmdlets Select-Object e Format-List para exibir os valores de propriedade de um objeto. Select-Object e Format-List têm um parâmetro Property. Você pode usar o parâmetro Property para especificar uma ou mais propriedades e seus valores. Ou, você pode usar o caractere curinga (*) para representar todas as propriedades.

Por exemplo, o comando a seguir exibe os valores de todas as propriedades do arquivo 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.5.0.101
                      FileDescription:  PowerShell 7
                      Product:          PowerShell
                      ProductVersion:   7.5.0-rc.1 SHA: c0142dde17137e436e302b3c4e93e2d6dc50c5c4+c0142dde17137e436e302b3c4e93e2d6dc50c5c4
                      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            :
Name                : pwsh.exe
Length              : 284704
DirectoryName       : C:\Program Files\PowerShell\7-preview
Directory           : C:\Program Files\PowerShell\7-preview
IsReadOnly          : False
Exists              : True
FullName            : C:\Program Files\PowerShell\7-preview\pwsh.exe
Extension           : .exe
CreationTime        : 11/13/2024 10:12:26 PM
CreationTimeUtc     : 11/14/2024 4:12:26 AM
LastAccessTime      : 1/3/2025 1:38:13 PM
LastAccessTimeUtc   : 1/3/2025 7:38:13 PM
LastWriteTime       : 11/13/2024 10:12:26 PM
LastWriteTimeUtc    : 11/14/2024 4:12:26 AM
LinkTarget          :
UnixFileMode        : -1
Attributes          : Archive

Propriedades estáticas

Você pode usar as propriedades estáticas de classes .NET no PowerShell. As propriedades estáticas são propriedades de classe, ao contrário das propriedades padrão, que são propriedades de um objeto.

Para obter as propriedades estáticas de uma classe, use o parâmetro Static do cmdlet Get-Member. Por exemplo, o comando a seguir obtém as propriedades estáticas da classe 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 obter o valor de uma propriedade estática, use a sintaxe a seguir.

[<ClassName>]::<Property>

Por exemplo, o comando a seguir obtém o valor da propriedade UtcNow static da classe System.DateTime.

[System.DateTime]::UtcNow

Enumeração de acesso de membro

A partir do PowerShell 3.0, quando você usa o operador de acesso de membro (.) para acessar uma propriedade que não existe, o PowerShell enumera automaticamente os itens na coleção e retorna o valor da propriedade para cada item.

Este comando retorna o valor da propriedade DisplayName de cada serviço que Get-Service retorna.

(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...

A maioria das coleções no PowerShell tem uma propriedade Count que retorna os itens de número na coleção.

(Get-Service).Count
176

Se existir uma propriedade nos objetos individuais e na coleção, somente a propriedade da coleção será retornada.

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 obter mais informações, consulte about_Member-Access_Enumeration.

Consulte também