İç ü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
psbase
MemberSet, 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
psadapted
MemberSet, varsa temel nesnenin yanı sıra uyarlanmış üyeleri gösterir. Uyarlanan üyeler Genişletilmiş Tür Sistemi (ETS) tarafından eklenir.psextended
psextended
MemberSet yalnızca Types.ps1xml dosyaları ve Add-Member cmdlet'i tarafından eklenen üyeleri gösterir. Herhangi bir nesne çalışma zamanında cmdlet'iAdd-Member
kullanılarak genişletilebilir.psobject
psobject
MemberSet, 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-Member
benzer, 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 psextended
bir 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
pstypenames
CodeProperty, 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.FileInfo
en belirli nesne türüyle başlar ve en genel tür System.Object
olan öğ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-Object
daha iyi performans gösterir.
Daha fazla bilgi için bkz . about_Classes.
PowerShell