about_Properties
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 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. 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ê obtém 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 tem o atributo somente leitura e $False
se não tem. 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 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 powershell.exe
arquivo e o envia para o Get-Member
. A $PSHOME
variável automática 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 , conforme mostrado no exemplo a Property
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 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 do nome da propriedade.
Por exemplo, o comando a seguir exibe o valor da propriedade CreationTime do powershell.exe
arquivo. O Get-ChildItem
comando retorna um objeto FileInfo que representa o powershell.exe file
. O comando é colocado entre parênteses para garantir que ele seja executado antes que qualquer propriedade seja acessada.
(Get-ChildItem $PSHOME\powershell.exe).CreationTime
Saturday, June 5, 2021 7:07:00 AM
Você também pode salvar um objeto em uma variável e, em seguida, obter suas propriedades usando o método member access (.
), conforme mostrado no exemplo a seguir:
$a = Get-ChildItem $PSHOME\powershell.exe
$a.CreationTime
Saturday, June 5, 2021 7:07:00 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 powershell.exe
arquivo.
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.22000.1 (WinBuild.160101.0800)
FileDescription: Windows PowerShell
Product: Microsoft? Windows? Operating System
ProductVersion: 10.0.22000.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.22000.1_none_bf599c
5a06fbb6f4\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 : 6/5/2021 7:07:00 AM
CreationTimeUtc : 6/5/2021 12:07:00 PM
LastAccessTime : 7/18/2022 12:16:17 PM
LastAccessTimeUtc : 7/18/2022 5:16:17 PM
LastWriteTime : 6/5/2021 7:07:00 AM
LastWriteTimeUtc : 6/5/2021 12:07:00 PM
Attributes : Archive
Propriedades estáticas
Você pode usar as propriedades estáticas das 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 Get-Member
parâmetro Static do cmdlet. 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
Enumeração de acesso a membro
A partir do PowerShell 3.0, quando você usa o operador de acesso de membro (.
) para acessar uma propriedade que não existe em uma coleção de listas, o PowerShell enumera automaticamente os itens na coleção e retorna o valor da propriedade em cada item. Para obter mais informações, consulte about_Member-Access_Enumeration.
Exemplos
Esse comando retorna o valor da propriedade DisplayName de cada serviço retornado Get-Service
.
(Get-Service).DisplayName
Application Experience
Application Layer Gateway Service
Windows All-User Install Agent
Application Identity
Application Information
...
Todas as coleções têm uma propriedade Count que retorna o número de objetos na coleção.
(Get-Service).Count
176
A partir do PowerShell 3.0, você pode obter a propriedade Count ou Length de objetos singleton que não são coleções.
(Get-Service Audiosrv).Count
1
No entanto, alguns objetos têm uma propriedade Length . Por exemplo, o comprimento de uma cadeia de caracteres é o número de caracteres na cadeia de caracteres. A propriedade Count é o número de instâncias do objeto.
PS> $str = 'string'
PS> $str.Length
6
PS> $str.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