Tentang anggota intrinsik
Deskripsi singkat
Menyediakan informasi tentang anggota intrinsik PowerShell yang tersedia untuk semua objek PowerShell.
Deskripsi terperinci
Saat objek dibuat, PowerShell menambahkan beberapa properti dan metode "tersembunyi" ke setiap objek. Properti dan metode ini dikenal sebagai anggota intrinsik. Anggota intrinsik ini biasanya tersembunyi dari tampilan. Anggota tersembunyi ini dapat dilihat menggunakan parameter Force get-Member.
Tampilan objek
Anggota intrinsik menyertakan sekumpulan properti MemberSet yang mewakili tampilan objek. Untuk informasi selengkapnya tentang properti MemberSet , lihat PSMemberSet.
Setiap objek PowerShell menyertakan properti berikut.
psbase
psbase
MemberSet berisi anggota objek dasar tanpa ekstensi atau adaptasi. Tergantung pada jenis objek, itu adalah instans .NET yang dibungkus oleh[psobject]
instans atau, jika tidak ada pembungkus, itu adalah objek input itu sendiri.psadapted
psadapted
MemberSet menunjukkan objek dasar ditambah anggota yang diadaptasi, jika ada. Anggota yang diadaptasi ditambahkan oleh Extended Type System (ETS).psextended
psextended
MemberSethanya menampilkan anggota yang ditambahkan oleh file Type.ps1xml dan cmdlet Add-Member. Objek apa pun dapat diperluas saat runtime menggunakanAdd-Member
cmdlet.psobject
psobject
MemberSet sumber refleksi yang kaya untuk objek apa pun yang mencakup metode, properti, dan informasi lainnya tentang objek.
Contoh
Untuk contoh ini, $hash
adalah hashtable yang berisi informasi tentang pengguna.
Parameter Get-Member
Force menunjukkan kepada kita anggota intrinsik objek.
$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…
Menggunakan psobject
mirip dengan menggunakan Get-Member
, tetapi memberikan lebih banyak fleksibilitas. Misalnya, Anda dapat menghitung properti objek dan nilainya.
$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
Bandingkan dengan objek yang dibuat dengan mengonversi hashtable ke PSCustomObject.
$user = [pscustomobject]$hash
$user.psobject.Properties | Select-Object Name, MemberType, Value
Name MemberType Value
---- ---------- -----
Age NoteProperty 33
Name NoteProperty Bob
Perhatikan bahwa kunci dari hashtable telah dikonversi ke properti di PSCustomObject. Properti baru sekarang menjadi bagian psextended
dari MemberSet.
$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…
Ketik informasi
pstypenames
CodeProperty mencantumkan hierarki jenis objek dalam urutan pewarisan. Contohnya:
$file = Get-Item C:\temp\test.txt
$file.pstypenames
System.IO.FileInfo
System.IO.FileSystemInfo
System.MarshalByRefObject
System.Object
Output dimulai dengan jenis objek yang paling spesifik, System.IO.FileInfo
, dan berlanjut ke jenis yang paling umum, System.Object
.
Metode
PowerShell menambahkan dua metode tersembunyi ke semua objek PowerShell. Metode ini tidak terlihat menggunakan Get-Member -Force
perintah atau penyelesaian tab.
ForEach() dan Where()
Metode ForEach()
dan Where()
tersedia untuk semua objek PowerShell.
Namun, mereka paling berguna saat bekerja dengan koleksi. Untuk informasi selengkapnya tentang cara menggunakan metode ini, lihat about_Arrays.
Properti
Properti Jumlah dan Panjang tersedia untuk semua objek PowerShell, bukan hanya koleksi. Ini mirip satu sama lain tetapi dapat bekerja secara berbeda tergantung pada jenis data. Misalnya, Panjang string adalah jumlah karakter dalam string. Properti Hitung adalah jumlah instans objek.
PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1
Untuk informasi selengkapnya tentang properti ini, lihat about_Properties.
Jenis skalar pengindeksan array
Saat objek bukan koleksi terindeks, menggunakan operator indeks untuk mengakses elemen pertama mengembalikan objek itu sendiri. Nilai indeks di luar elemen pertama mengembalikan $null
.
PS> (2)[0]
2
PS> (2)[-1]
2
PS> (2)[1] -eq $null
True
PS> (2)[0,0] -eq $null
True
Untuk informasi selengkapnya, lihat about_Operators.
Metode new() untuk jenis
Dimulai di PowerShell 5.0, PowerShell menambahkan metode statis New()
untuk semua jenis .NET. Contoh berikut menghasilkan hasil yang sama.
$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')
Menggunakan metode ini new()
berkinerja lebih baik daripada menggunakan New-Object
.
Untuk informasi selengkapnya, lihat about_Classes.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk