Sobre Propriedades

  • 12/01/2017
  • 5 minutos para ler
    • >S
    • s
    • q

Curta descrição

Descrifica como usar as propriedades dos objectos no PowerShell.

Descrição longa

PowerShell usa colecções estruturadas de informação chamadas objectos que rasgam os itens nas lojas de dados ou o estado do computador. Normalmente, você trabalha com objetos que fazem parte do Microsoft .NET Framework, mas você também pode criar objetos personalizados no PowerShell.

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

Maior parte dos objetos tem propriedades. As propriedades são os dados que estão associados a um objecto. Diferentes tipos de objetos têm propriedades diferentes. Por exemplo, um objeto FileInfo, que representa um arquivo, tem uma propriedade IsReadOnly que contém $True se o arquivo contém o atributo read-only e $False se não contém. Um objeto DirectoryInfo, que representa um diretório de sistema de arquivos, tem uma propriedade Parentproperty que contém o caminho para o diretório pai.

Object properties

Para obter as propriedades de um objeto, use a opção Get-Member cmdlet. Por exemplo, para obter as propriedades de um objeto FileInfo, use a opção Get-ChildItem cmdlet para obter o objeto FileInfo que representa um arquivo. Depois, use um operador de pipeline (|) para enviar o objeto FileInfo para Get-Member. O comando seguinte obtém o ficheiro PowerShell.exe e envia-o para Get-Member.A variável automática $Pshome contém o caminho do directório PowerShellinstallation.

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

A saída do comando lista os membros do objecto FileInfo. Os membros incluem tanto propriedades como métodos. Quando trabalha no PowerShell, tem acesso a todos os membros dos objectos.

Para obter apenas as propriedades de um objecto e não os métodos, use o parâmetroMemberType do ficheiro Get-Member cmdlet com um valor de “propriedade”, apresentado no exemplo seguinte.

Get-ChildItem $pshome\PowerShell.exe | Get-Member -MemberType property
TypeName: System.IO.FileInfoName 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, pode usá-las nos seus comandos PowerShell.

Valores de propriedade

Embora cada objecto de um tipo específico tenha as mesmas propriedades, os valores dessas propriedades descrevem o objecto em particular. Por exemplo, todo objetoFileInfo tem uma propriedade CreationTime, mas o valor dessa propriedadediffers para cada arquivo.

A maneira mais comum de obter os valores das propriedades de um objeto é usar o método ponto. Digite uma referência ao objeto, como uma variável que contenha o objeto, ou um comando que obtenha o objeto. Depois, digite um ponto (.)seguido do nome da propriedade.

Por exemplo, o seguinte comando exibe o valor da propriedade CreationTimeproperty do arquivo PowerShell.exe. O comando Get-ChildItem retorna um objetoFileInfo que representa o arquivo PowerShell.exe. O comando é fechado entre parênteses para garantir que ele seja executado antes que qualquer propriedade seja acessada. O comando Get-ChildItem é seguido por um ponto e o nome da propriedade CreationTime, como segue:

(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 então obter suas propriedades usando o método ponto, como mostrado no seguinte exemplo:

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

Você também pode usar os Select-Object e Format-List cmdlets para exibir os valores de propriedade de um objeto. Select-Object e Format-List cada um tem um parâmetroPropriedade. Você pode usar o parâmetro 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 seguinte comando 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.exePSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Windows\System3 2\WindowsPowerShell\v1.0PSChildName : PowerShell.exePSDrive : CPSProvider : Microsoft.PowerShell.Core\FileSystemPSIsContainer : FalseMode : -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 : PowerShellTarget : {C:\Windows\WinSxS\amd64_microsoft-windows-powershell-ex e_31bf3856ad364e35_10.0.16299.15_none_8c022aa6735716ae\p owershell.exe}LinkType : HardLinkName : PowerShell.exeLength : 449024DirectoryName : C:\Windows\System32\WindowsPowerShell\v1.0Directory : C:\Windows\System32\WindowsPowerShell\v1.0IsReadOnly : FalseExists : TrueFullName : C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exExtension : .exeCreationTime : 9/29/2017 6:43:19 AMCreationTimeUtc : 9/29/2017 1:43:19 PMLastAccessTime : 9/29/2017 6:43:19 AMLastAccessTimeUtc : 9/29/2017 1:43:19 PMLastWriteTime : 9/29/2017 6:43:19 AMLastWriteTimeUtc : 9/29/2017 1:43:19 PMAttributes : Archive

Propriedades estáticas

Você pode usar as propriedades estáticas das classes .NET no PowerShell. Propriedades estáticas são propriedades da 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 estático do cmdletGet-Member.

Por exemplo, o seguinte comando obtém as propriedades estáticas da classeSystem.DateTime.

Get-Date | Get-Member -MemberType Property -Static
TypeName: System.DateTimeName 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 seguinte sintaxe.

::<Property>

Por exemplo, o seguinte comando obtém o valor da propriedade estática UtcNow da classe System.DateTime.

::UtcNow

Propriedades de objetos scalar e coleções

As propriedades de um objeto (“scalar”) de um determinado tipo são frequentemente diferentes das propriedades de uma coleção de objetos do mesmo tipo.

O comando seguinte obtém o valor da propriedade DisplayName do serviço’Audiosrv’.

(Get-Service Audiosrv).DisplayName
Windows Audio

Começando no PowerShell 3.0, o PowerShell tenta evitar erros de script que resultam das diferentes propriedades dos objetos e coleções escalares. O mesmo comando retorna o valor da propriedade DisplayName de cada servicethat Get-Service retorna.

(Get-Service).DisplayName
Application ExperienceApplication Layer Gateway ServiceWindows All-User Install AgentApplication IdentityApplication Information...

Quando você submete uma coleção, mas solicita uma propriedade que existe apenas em objetos únicos (“scalar”), PowerShell retorna o valor dessa propriedade para cada objeto da coleção.

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

(Get-Service).Count
176

Começando no PowerShell 3.0, se você solicitar a propriedade Count ou Length dos objetos zero ou um objeto, PowerShell retorna 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 é retornada.

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

Deixe uma resposta

O seu endereço de email não será publicado.