İç üyeler hakkında

Kısa açıklama

Tüm PowerShell nesneleri tarafından kullanılabilen PowerShell'in iç üyeleri hakkında bilgi sağlar.

Ayrıntılı açıklama

Nesneler oluşturulduğunda, PowerShell her nesneye bazı "gizli" özellikler ve yöntemler ekler. Bu özellikler ve yöntemler iç üyeler olarak bilinir. Bu iç üyeler normalde görünümden gizlenir. Bu gizli üyeler Get-Member öğesinin Force parametresi kullanılarak görülebilir.

Nesne görünümleri

İç üyeler, nesnenin görünümünü temsil eden bir memberSet özellikleri kümesi içerir. MemberSet özellikleri hakkında daha fazla bilgi için bkz. PSMemberSet.

Her PowerShell nesnesi aşağıdaki özellikleri içerir.

  • psbase

    psbaseMemberSet, uzantı veya uyarlama olmadan temel nesnenin üyelerini içerir. Nesne türüne bağlı olarak, bir örnek tarafından sarmalanmış bir [psobject] .NET örneğidir veya sarmalayıcı yoksa giriş nesnesinin kendisidir.

  • psadapted

    psadaptedMemberSet, varsa temel nesnenin yanı sıra uyarlanmış üyeleri gösterir. Uyarlanan üyeler Genişletilmiş Tür Sistemi (ETS) tarafından eklenir.

  • psextended

    psextendedMemberSetyalnızca Types.ps1xml dosyaları ve Add-Member cmdlet'i tarafından eklenen üyeleri gösterir. Herhangi bir nesne çalışma zamanında cmdlet'i Add-Member kullanılarak genişletilebilir.

  • psobject

    psobjectMemberSet, yöntemler, özellikler ve nesne hakkındaki diğer bilgileri içeren herhangi bir nesne için zengin bir yansıma kaynağıdır.

Örnekler

Bu örnekte, $hash bir kullanıcı hakkında bilgi içeren bir karma tablodur. parametresiGet-Member, nesnenin iç üyelerini gösterir.

$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…

kullanımı psobject , kullanımına Get-Memberbenzer, ancak daha fazla esneklik sağlar. Örneğin, bir nesnenin özelliklerini ve değerlerini numaralandırabilirsiniz.

$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

Bunu, hashtable'ı PSCustomObject'e dönüştürerek oluşturulan nesneyle karşılaştırın.

$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name   MemberType Value
----   ---------- -----
Age  NoteProperty    33
Name NoteProperty   Bob

Karma tablodaki anahtarların PSCustomObject içindeki özelliklere dönüştürüldüğüne dikkat edin. Yeni özellikler artık MemberSet'in psextendedbir parçasıdır.

$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…

Tür bilgileri

pstypenamesCodeProperty, nesne türü hiyerarşisini devralma sırasına göre listeler. Örneğin:

$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object

Çıkış, System.IO.FileInfoen belirli nesne türüyle başlar ve en genel tür System.Objectolan öğesine kadar devam eder.

Yöntemler

PowerShell, tüm PowerShell nesnelerine iki gizli yöntem ekler. Bu yöntemler komut veya sekme tamamlama kullanılarak Get-Member -Force görünmez.

ForEach() ve Where()

ForEach() ve Where() yöntemleri tüm PowerShell nesneleri tarafından kullanılabilir. Ancak, koleksiyonlarla çalışırken en kullanışlı olanlardır. Bu yöntemleri kullanma hakkında daha fazla bilgi için bkz . about_Arrays.

Properties

Count ve Length özellikleri yalnızca koleksiyonlar için değil tüm PowerShell nesneleri tarafından kullanılabilir. Bunlar birbirine benzer ancak veri türüne bağlı olarak farklı çalışabilir. Örneğin, dizenin Uzunluğu dizedeki karakter sayısıdır. Count özelliği, nesnenin örnek sayısıdır.

PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1

Bu özellikler hakkında daha fazla bilgi için bkz . about_Properties.

Dizi dizinleme skaler türleri

Bir nesne dizine alınan bir koleksiyon olmadığında, ilk öğeye erişmek için dizin işlecini kullanmak nesnenin kendisini döndürür. İlk öğenin dışındaki dizin değerleri döndürür $null.

PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True

Daha fazla bilgi için bkz . about_Operators.

Türler için New() yöntemi

PowerShell 5.0 sürümünden başlayarak, PowerShell tüm .NET türleri için statik New() bir yöntem ekler. Aşağıdaki örneklerde aynı sonuç elde edilmektedir.

$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')

yöntemini kullanmak new() , kullanmaktan New-Objectdaha iyi performans gösterir.

Daha fazla bilgi için bkz . about_Classes.