Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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 ForceGet-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
MemberSet berisi anggota-anggota dari objek dasar tanpa tambahan atau penyesuaian. Tergantung pada jenis objek, itu adalah instans .NET yang dibungkus oleh instans [psobject]
atau, jika tidak ada pembungkus, itu adalah objek input itu sendiri.psadapted
MemberSet menunjukkan objek dasar ditambah anggota yang diadaptasi, jika ada. Anggota yang diadaptasi ditambahkan oleh Extended Type System (ETS). psextended
MemberSet hanya menunjukkan anggota yang ditambahkan oleh fileType.ps1xml dan cmdlet Add-Member . Objek apa pun dapat diperluas pada runtime menggunakan cmdlet Add-Member
.psobject
psobject
MemberSet adalah sumber refleksi yang kaya untuk segala objek yang mencakup metode, properti, dan informasi lainnya tentang objek tersebut.
Contoh
Untuk contoh ini, $hash
adalah hashtable yang berisi informasi tentang pengguna.
Parameter ForceGet-Member
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 dari psextended
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. Misalnya:
$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 perintah Get-Member -Force
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
Tidak semua jenis skalar memiliki properti Count atau Length dalam jenis dasar. PowerShell menambahkan properti yang hilang sebagai anggota intrinsik untuk semua jenis skalar.
Nota
Variabel yang tidak diinisialisasi secara implisit $null
.
Meskipun properti Count dan Length serupa, properti tersebut mungkin bekerja secara berbeda tergantung pada jenis data. Misalnya, Panjang string adalah jumlah karakter dalam string. Properti Count adalah jumlah instance dari objek.
PS> $str = 'string'
PS> $str.Length
6
PS> $str.Count
1
Untuk informasi selengkapnya tentang properti ini, lihat about_Properties.
Tipe skalar untuk 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 tipe
Dimulai di PowerShell 5.0, PowerShell menambahkan metode new()
statis untuk semua jenis .NET. Contoh berikut menghasilkan hasil yang sama.
$expression = New-Object -TypeName regex -ArgumentList 'pattern'
$expression = [regex]::new('pattern')
Menggunakan metode new()
berkinerja lebih baik daripada menggunakan New-Object
.
Untuk informasi selengkapnya, lihat about_Classes.