about_Properties

Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0

TÓPICO

about_Properties

DESCRIÇÃO BREVE

Descreve como usar as propriedades do objeto no Windows PowerShell.

DESCRIÇÃO LONGA

O Windows PowerShell usa coleções de informações estruturadas denominadas objetos para representar os itens em armazenamentos de dados ou o estado do computador. Normalmente, você trabalha com o objeto que faz parte do Microsoft .NET Framework, mas você também pode criar objetos personalizados em Windows 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 em Windows PowerShell, não obtém o arquivo real. Em vez disso, você obtém um objeto FileInfo que representa o arquivo. Quando você altera o objeto FileInfo, o arquivo altera também.

A maioria dos objetos têm 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 atributo somente leitura e $False se ele não tiver. Um objeto DirectoryInfo, que representa um diretório de sistema de arquivos, tem uma propriedade pai 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 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 Windows PowerShell.

         Get-ChildItem $pshome\PowerShell.exe | Get-Member

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

Para obter somente as propriedades de um objeto e não os métodos, use o parâmetro MemberType do cmdlet Get-Member com um valor de "propriedade", 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 localizar as propriedades, você pode usá-las em comandos do Windows PowerShell.

VALORES DE PROPRIEDADE

Embora todos os objetos de um tipo específico tenham 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 comando Get-ChildItem retorna um objeto FileInfo que representa o arquivo PowerShell.exe. O comando é colocado entre parênteses para certificar-se de que ele seja executado antes que todas as propriedades sejam acessadas. O comando Get-ChildItem é seguido por um ponto e o nome da propriedade CreationTime, da seguinte maneira:

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

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

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

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 de propriedade. Você pode usar o parâmetro de propriedade 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 o valor de todas as propriedades do arquivo PowerShell.exe.

         C:\PS> 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
         VersionInfo       : File:             C:\Windows\system32\WindowsPowerShell\v1.0\PowerShell.exe
                             InternalName:     POWERSHELL
                             OriginalFilename: PowerShell.EXE.MUI
                             File Version:      6.1.6570.1 (fbl_srv_PowerShell(nigels).070711-0102)
                             FileDescription:  PowerShell.EXE
                             Product:          Microsoft® Windows® Operating System
                             ProductVersion:   6.1.6570.1
                             Debug:            False
                             Patched:          False
                             PreRelease:       False
                             PrivateBuild:     True
                             SpecialBuild:     False
                             Language:         English (United States)

         BaseName          : PowerShell
         Mode              : -a---
         Name              : PowerShell.exe
         Length            : 160256
         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      : 3/18/2008 12:07:52 AM
         CreationTimeUtc   : 3/18/2008 7:07:52 AM
         LastAccessTime    : 3/19/2008 8:13:58 AM
         LastAccessTimeUtc : 3/19/2008 3:13:58 PM
         LastWriteTime     : 3/18/2008 12:07:52 AM
         LastWriteTimeUtc  : 3/18/2008 7:07:52 AM
         Attributes        : Archive
        

PROPRIEDADES ESTÁTICAS

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

Para obter as propriedades estáticas da classe, use o parâmetro estático 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 estático da classe System.DateTime.

        [System.DateTime]::UtcNow

PROPRIEDADES DE OBJETOS ESCALARES E COLEÇÕES

As propriedades de um objeto ("escalar") de um tipo específico geralmente 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. Da mesma forma, todas as coleções têm uma propriedade Count que informa quantos objetos estão na coleção, mas objetos individuais não têm uma propriedade Count.

A partir de Windows PowerShell 3.0, o Windows PowerShell tenta impedir os erros de script resultantes de propriedades diferentes de coleções e objetos escalares.

-- Se você enviar uma coleção, mas solicitar uma propriedade que existe apenas em objetos ("escalares") únicos, o Windows PowerShell retorna o valor dessa propriedade para cada objeto na coleção.

-- Se você solicitar a propriedade Count ou Lenght de zero objetos ou de um objeto, o Windows PowerShell retorna o valor correto.

Se a propriedade existe em objetos individuais e na coleção, o Windows PowerShell não altera o resultado.

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

EXEMPLOS

Por exemplo, cada serviço tem uma propriedade DisplayName. O comando a seguir obtém o valor da propriedade DisplayName do serviço Audiosrv.

        PS C:\>(Get-Service Audiosrv).DisplayName
        Windows Audio

No entanto, uma coleção ou matriz de serviços não tem um DisplayName. O comando a seguir tenta obter a propriedade DisplayName de todos os serviços em Windows PowerShell 2.0.

        PS C:\>(Get-Service).DisplayName
        PS C:\>

A partir de Windows PowerShell 3.0, o mesmo comando retorna o valor da propriedade DisplayName de cada serviço que retorna Get-Service.

        PS C:\>(Get-Service).DisplayName
        Application Experience
        Application Layer Gateway Service
        Windows All-User Install Agent
        Application Identity
        Application Information
        ...

Por outro lado, uma coleção de dois ou mais serviços tem uma propriedade Count, que contém o número de objetos na coleção.

        PS C:\>(Get-Service).Count
        176

Serviços individuais não têm uma propriedade Count ou Lenght, conforme mostrado nesse comando no Windows PowerShell 2.0.

        PS C:\>(Get-Service Audiosrv).Count
        PS C:\>

A partir de Windows PowerShell 3.0, o comando retorna o valor correto de contagem.

        PS C:\>(Get-Service Audiosrv).Count
        1

CONSULTE TAMBÉM

about_Methods

about_Objects

Get-Member

Select-Object

Format-List