Compartilhar via


Sobre propriedades

Descrição breve

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 um objeto que faz 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. Ao alterar um objeto, você 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ê recebe um objeto FileInfo 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. Tipos diferentes 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 o atributo somente leitura e $False se não o fizer. Um objeto DirectoryInfo, que representa um diretório do sistema de arquivos, tem uma propriedade Parent que contém o caminho até o diretório pai.

Propriedades de objeto

Para obter as propriedades de um objeto , use o Get-Member cmdlet . Por exemplo, para obter as propriedades de um objeto FileInfo , use o Get-ChildItem cmdlet 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 PowerShell.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\PowerShell.exe | Get-Member

A saída do comando lista os membros do objeto FileInfo . Os membros incluem propriedades e métodos. Ao trabalhar no PowerShell, você 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 Get-Member cmdlet com um valor de "property", conforme mostrado no exemplo a seguir.

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

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

Valores de propriedade

Embora todo 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 é diferente para cada arquivo.

A maneira mais comum para obter os valores das propriedades de um objeto é usar o método de ponto. 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 um ponto (.) seguido pelo nome da propriedade.

Por exemplo, o comando a seguir exibe o valor da propriedade CreationTime do arquivo PowerShell.exe. O Get-ChildItem comando retorna um objeto FileInfo que representa o arquivo PowerShell.exe. O comando é colocado entre parênteses para garantir sua execução antes que qualquer propriedade seja acessada. O Get-ChildItem comando é seguido por um ponto e o nome da propriedade CreationTime, da seguinte maneira:

(Get-ChildItem $pshome\PowerShell.exe).creationtime
Tuesday, March 18, 2008 12:07:52 AM

Você pode também salvar um objeto em uma variável e, em seguida, obter suas propriedades usando o método do ponto, conforme mostra o exemplo a seguir:

$a = Get-ChildItem $pshome\PowerShell.exe
$a.CreationTime
Tuesday, March 18, 2008 12:07:52 AM

Você também pode usar os Select-Object cmdlets e Format-List para exibir os valores de propriedade de um objeto. Select-Object e Format-List cada um tem 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 PowerShell.exe.

Get-ChildItem $pshome\PowerShell.exe | Format-List -Property *
PSPath            : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
                    2\WindowsPowerShell\v1.0\PowerShell.exe
PSParentPath      : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3
                    2\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.16299.15 (WinBuild.160101.0800)
                    FileDescription:  Windows PowerShell
                    Product:          Microsoft Windows Operating System
                    ProductVersion:   10.0.16299.15
                    Debug:            False
                    Patched:          False
                    PreRelease:       False
                    PrivateBuild:     False
                    SpecialBuild:     False
                    Language:         English (United States)

BaseName          : PowerShell
Target            : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-ex
                    e_31bf3856ad364e35_10.0.16299.15_none_8c022aa6735716ae\p
                    owershell.exe}
LinkType          : HardLink
Name              : PowerShell.exe
Length            : 449024
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.ex
Extension         : .exe
CreationTime      : 9/29/2017 6:43:19 AM
CreationTimeUtc   : 9/29/2017 1:43:19 PM
LastAccessTime    : 9/29/2017 6:43:19 AM
LastAccessTimeUtc : 9/29/2017 1:43:19 PM
LastWriteTime     : 9/29/2017 6:43:19 AM
LastWriteTimeUtc  : 9/29/2017 1:43:19 PM
Attributes        : Archive

Propriedades estáticas

Você pode usar as propriedades estáticas de classes .NET no PowerShell. 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 System.DateTime classe .

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 estática UtcNow da System.DateTime classe .

[System.DateTime]::UtcNow

Propriedades de objetos escalares e coleções

Normalmente, as propriedades de um objeto ("escalar") de um tipo específico são diferentes das propriedades de uma coleção de objetos do mesmo tipo. Por exemplo, cada serviço tem como propriedade DisplayName , mas uma coleção de serviços não tem uma propriedade DisplayName .

O comando a seguir obtém o valor da propriedade DisplayName do serviço 'Audiosrv'.

(Get-Service Audiosrv).DisplayName
Windows Audio

A partir do PowerShell 3.0, o PowerShell tenta evitar erros de script resultantes das diferentes propriedades de objetos e coleções escalares. O mesmo 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
...

Quando você envia uma coleção, mas solicita uma propriedade que existe apenas em objetos únicos ("escalares"), o PowerShell retorna o valor dessa propriedade para cada objeto na coleção.

Todas as coleções têm uma propriedade Count que retorna quantos objetos estão na coleção.

(Get-Service).Count
176

A partir do PowerShell 3.0, se você solicitar a propriedade Count ou Length de zero objetos ou um objeto, o PowerShell retornará o valor correto.

(Get-Service Audiosrv).Count
1

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

$collection = @(
[pscustomobject]@{length = "foo"}
[pscustomobject]@{length = "bar"}
)
# PowerShell returns the collection's Length.
$collection.length
2

Esse recurso também funciona em métodos de objetos escalares e de coleções. Para obter mais informações, consulte about_Methods.

Confira também

about_Methods

about_Objects

Get-Member

Select-Object

Format-List