Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Breve descrição
Fornece informações sobre os membros intrínsecos do PowerShell que estão disponíveis para todos os objetos do PowerShell.
Descrição longa
Quando os objetos são criados, o PowerShell adiciona algumas propriedades e métodos "ocultos" a cada objeto. Essas propriedades e métodos são conhecidos como membros intrínsecos. Estes membros intrínsecos são normalmente escondidos da vista. Esses membros ocultos podem ser vistos usando o parâmetro Force de Get-Member.
Modos de exibição de objeto
Os membros intrínsecos incluem um conjunto de MemberSet propriedades que representam uma exibição do objeto. Para obter mais informações sobre propriedades MemberSet, consulte PSMemberSet.
Cada objeto do PowerShell inclui as seguintes propriedades.
psbaseO
psbaseMemberSet contém os membros do objeto base sem extensão ou adaptação. Dependendo do tipo de objeto, é uma instância .NET encapsulada por uma instância[psobject]ou, se não houver wrapper, é o próprio objeto de entrada.psadaptedO
psadaptedMemberSet mostra o objeto base mais os membros adaptados, se presentes. Membros adaptados são adicionados pelo Extended Type System (ETS).psextendedO
psextendedMemberSetapenas mostra os membros adicionados pelos arquivos de Types.ps1xml do e pelo cmdlet Add-Member . Qualquer objeto pode ser estendido em tempo de execução usando o cmdletAdd-Member.psobjectO
psobjectMemberSet uma fonte rica de reflexão para qualquer objeto que inclua métodos, propriedades e outras informações sobre o objeto.
Exemplos
Para este exemplo, $hash é uma hashtable que contém informações sobre um usuário.
O parâmetro Force de Get-Member nos mostra os membros intrínsecos do objeto.
$hash = @{
Age = 33
Name = 'Bob'
}
$hash | Get-Member -Force -MemberType MemberSet, CodeProperty
TypeName: System.Collections.Hashtable
Name MemberType Definition
---- ---------- ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=7…
psadapted MemberSet psadapted {Item, IsReadOnly, IsFixedSize, IsSynchronized, Keys, Values, SyncRoot, Count, Add,…
psbase MemberSet psbase {Item, IsReadOnly, IsFixedSize, IsSynchronized, Keys, Values, SyncRoot, Count, Add, Cl…
psextended MemberSet psextended {}
psobject MemberSet psobject {Members, Properties, Methods, ImmediateBaseObject, BaseObject, TypeNames, get_Membe…
O uso do psobject é semelhante ao uso do Get-Member, mas oferece mais flexibilidade. Por exemplo, você pode enumerar as propriedades de um objeto e seus valores.
$hash.psobject.Properties | Select-Object Name, MemberType, Value
Name MemberType Value
---- ---------- -----
IsReadOnly Property False
IsFixedSize Property False
IsSynchronized Property False
Keys Property {Age, Name}
Values Property {33, Bob}
SyncRoot Property {[Age, 33], [Name, Bob]}
Count Property 2
Compare isso com o objeto criado convertendo a hashtable em um PSCustomObject.
$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name MemberType Value
---- ---------- -----
Age NoteProperty 33
Name NoteProperty Bob
Observe que as chaves da hashtable foram convertidas em propriedades no PSCustomObject. As novas propriedades agora fazem parte do psextendedMemberSet.
$user | Get-Member -Force -MemberType MemberSet, CodeProperty
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
pstypenames CodeProperty System.Collections.ObjectModel.Collection`1[[System.String, System.Private.CoreLib, Version=7…
psadapted MemberSet psadapted {ToString, GetType, Equals, GetHashCode}
psbase MemberSet psbase {ToString, GetType, Equals, GetHashCode}
psextended MemberSet psextended {Age, Name}
psobject MemberSet psobject {Members, Properties, Methods, ImmediateBaseObject, BaseObject, TypeNames, get_Membe…
Informações sobre o tipo
O pstypenamesCodeProperty lista a hierarquia de tipo de objeto em ordem de herança. Por exemplo:
$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object
A saída começa com o tipo de objeto mais específico, System.IO.FileInfo, e continua até o tipo mais genérico, System.Object.
Methods
O PowerShell adiciona dois métodos ocultos a todos os objetos do PowerShell. Esses métodos não são visíveis usando o comando Get-Member -Force ou o preenchimento de tabulação.
ForEach() e Where()
Os métodos ForEach() e Where() estão disponíveis para todos os objetos do PowerShell.
No entanto, eles são mais úteis quando se trabalha com coleções. Para obter mais informações sobre como usar esses métodos, consulte about_Arrays.
PowerShell 7.6-preview.5 adicionado PSForEach() como um alias para o ForEach() método e PSWhere() como um alias para o Where() método. Use esses aliases para evitar conflitos com ForEach() e Where() que podem ser definidos na classe base do objeto. Por exemplo, a System.Collections.Generic.List<T> classe define seu próprio ForEach() método. Use PSForEach() para evitar chamar o método de classe base.
Propriedades
Nem todos os tipos escalares têm de contagem ou propriedades de de comprimento no tipo base. O PowerShell adiciona a propriedade ausente como um membro intrínseco para todos os tipos escalares.
Observação
As variáveis não inicializadas são implicitamente $null.
$null é escalar e tem um de contagem de intrínseco e de comprimento de de 0.
Embora as propriedades Count e Length sejam semelhantes, elas podem funcionar de forma diferente dependendo do tipo de dados. Por exemplo, a 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
Para obter mais informações sobre essas propriedades, consulte about_Properties.
Tipos escalares de indexação de matrizes
Quando um objeto não é uma coleção indexada, usar o operador de índice para acessar o primeiro elemento retorna o próprio objeto. Os valores de índice além do primeiro elemento retornam $null.
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
Para obter mais informações, consulte about_Operators.
new() método para tipos
A partir do PowerShell 5.0, o PowerShell adiciona um método new() estático para todos os tipos .NET. Os exemplos a seguir produzem o mesmo resultado.
$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')
O uso do método new() funciona melhor do que o uso do New-Object.
Para obter mais informações, consulte about_Classes.