Add-Member
Menambahkan properti dan metode kustom ke instans objek PowerShell.
Sintaks
TypeNameSet (Default)
Add-Member
-InputObject <PSObject>
-TypeName <String>
[-PassThru]
[<CommonParameters>]
NotePropertyMultiMemberSet
Add-Member
[-NotePropertyMembers] <IDictionary>
-InputObject <PSObject>
[-TypeName <String>]
[-Force]
[-PassThru]
[<CommonParameters>]
NotePropertySingleMemberSet
Add-Member
[-NotePropertyName] <String>
[-NotePropertyValue] <Object>
-InputObject <PSObject>
[-TypeName <String>]
[-Force]
[-PassThru]
[<CommonParameters>]
MemberSet
Add-Member
[-MemberType] <PSMemberTypes>
[-Name] <String>
[[-Value] <Object>]
[[-SecondValue] <Object>]
-InputObject <PSObject>
[-TypeName <String>]
[-Force]
[-PassThru]
[<CommonParameters>]
Deskripsi
Cmdlet Add-Member memungkinkan Anda menambahkan anggota (properti dan metode) ke instans objek PowerShell. Misalnya, Anda dapat menambahkan anggota NoteProperty yang berisi deskripsi objek atau anggota ScriptMethod yang menjalankan skrip untuk mengubah objek.
Untuk menggunakan
Parameter MemberType menunjukkan jenis anggota yang ingin Anda tambahkan. Parameter Nama
Properti dan metode yang Anda tambahkan hanya ditambahkan ke instans objek tertentu yang Anda tentukan.
Add-Member tidak mengubah jenis objek. Untuk membuat jenis objek baru, gunakan cmdlet Add-Type.
Anda juga dapat menggunakan cmdlet Export-Clixml untuk menyimpan instans objek, termasuk anggota tambahan, dalam file. Kemudian Anda dapat menggunakan cmdlet Import-Clixml untuk membuat ulang instans objek dari informasi yang disimpan dalam file yang diekspor.
Dimulai di Windows PowerShell 3.0, Add-Member memiliki fitur baru yang memudahkan untuk menambahkan properti catatan ke objek. Anda dapat menggunakan parameter
Selain itu, dimulai di Windows PowerShell 3.0, parameter PassThru, yang menghasilkan objek output, lebih jarang diperlukan.
Add-Member sekarang menambahkan anggota baru langsung ke objek input dari lebih banyak jenis. Untuk informasi selengkapnya, lihat deskripsi parameter PassThru.
Contoh
Contoh 1: Menambahkan properti catatan ke PSObject
Contoh berikut menambahkan properti catatan Status
Perintah pertama menggunakan cmdlet $a.
Perintah kedua menambahkan properti catatan ke objek di $a.
Perintah ketiga menggunakan notasi titik untuk mendapatkan nilai properti Status Done.
$A = Get-ChildItem C:\ps-test\test.txt
$A | Add-Member -NotePropertyName Status -NotePropertyValue Done
$A.Status
Done
Contoh 2: Menambahkan properti alias ke PSObject
Contoh berikut menambahkan properti alias Ukuran
Perintah pertama menggunakan cmdlet
Perintah kedua menambahkan properti alias Ukuran
$A = Get-ChildItem C:\Temp\test.txt
$A | Add-Member -MemberType AliasProperty -Name Size -Value Length
$A.Size
2394
Contoh 3: Menambahkan properti catatan StringUse ke string
Contoh ini menambahkan properti StringUse note ke string. Karena Add-Member tidak dapat menambahkan jenis ke objek input String, Anda dapat menentukan parameter PassThru untuk menghasilkan objek output. Perintah terakhir dalam contoh menampilkan properti baru.
Contoh ini menggunakan parameter NotePropertyMembers. Nilai parameter NotePropertyMembers adalah tabel hash. Kuncinya adalah nama properti catatan, StringGunakan, dan nilainya adalah nilai properti catatan, Tampilkan.
$A = "A string"
$A = $A | Add-Member -NotePropertyMembers @{StringUse="Display"} -PassThru
$A.StringUse
Display
Contoh 4: Menambahkan metode skrip ke objek FileInfo
Contoh ini menambahkan metode skrip SizeInMB ke objek FileInfo yang menghitung ukuran file ke MegaByte terdekat. Perintah kedua membuat
Parameter Nilai $this hanya valid dalam blok skrip yang menentukan properti dan metode baru.
Perintah terakhir menggunakan notasi titik untuk memanggil metode skrip
$A = Get-ChildItem C:\Temp\test.txt
$S = {[Math]::Round(($this.Length / 1MB), 2)}
$A | Add-Member -MemberType ScriptMethod -Name "SizeInMB" -Value $S
$A.SizeInMB()
0.43
Contoh 5: Membuat objek kustom
Contoh ini membuat objek kustom Aset
Cmdlet New-Object membuat PSObject yang disimpan dalam variabel $Asset. Akselerator jenis [ordered] membuat kamus yang diurutkan yang disimpan dalam variabel $d.
Piping $Asset ke Add-Member menambahkan pasangan kunci-nilai dalam kamus ke objek sebagai NoteProperty anggota. parameter TypeName menetapkan jenis Asset ke PSObject. cmdlet Get-Member menunjukkan jenis dan properti objek. Namun, properti tercantum dalam urutan alfabet, bukan dalam urutan yang ditambahkan.
$Asset = New-Object -TypeName psobject
$d = [ordered]@{Name="Server30"; System="Server Core"; PSVersion="4.0"}
$Asset | Add-Member -NotePropertyMembers $d -TypeName Asset
$Asset | Get-Member -MemberType Properties
TypeName: Asset
Name MemberType Definition
---- ---------- ----------
Name NoteProperty string Name=Server30
PSVersion NoteProperty string PSVersion=4.0
System NoteProperty string System=Server Core
$Asset.psobject.Properties | Format-Table Name, MemberType, TypeNameOfValue, Value
Name MemberType TypeNameOfValue Value
---- ---------- --------------- -----
Name NoteProperty System.String Server30
System NoteProperty System.String Server Core
PSVersion NoteProperty System.String 4.0
Memeriksa daftar mentah properti memperlihatkan properti dalam urutan ditambahkan ke objek.
Format-Table digunakan dalam contoh ini untuk membuat output yang mirip dengan Get-Member.
Contoh 6: Menambahkan AliasProperty ke objek
Dalam contoh ini kita membuat objek kustom yang berisi dua NoteProperty anggota. Jenis untuk NoteProperty mencerminkan jenis nilai yang disimpan dalam properti . Dalam hal ini, properti Usia adalah string.
$user = [pscustomobject]@{
Name = 'Doris'
Age = '20'
}
$addMemberSplat = @{
MemberType = 'AliasProperty'
Name = 'IntAge'
Value = 'Age'
SecondValue = 'UInt32'
}
$user | Add-Member @addMemberSplat
$user | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
IntAge AliasProperty IntAge = (System.UInt32)Age
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Age NoteProperty string Age=20
Name NoteProperty string Name=Doris
PS> $obj
Name Age IntAge
---- --- ------
Doris 20 20
PS> $obj.Age + 1
201
PS> $obj.IntAge + 1
21
Properti IntAge adalah AliasProperty untuk properti Usia, tetapi jenisnya dijamin uint32.
Contoh 7: Menambahkan metode dapatkan dan atur ke objek kustom
Contoh ini menunjukkan cara menentukan metode Dapatkan dan Atur yang mengakses properti berlapis dalam.
$user = [pscustomobject]@{
Name = 'User1'
Age = 29
StartDate = [datetime]'2019-05-05'
Position = [pscustomobject]@{
DepartmentName = 'IT'
Role = 'Manager'
}
}
$addMemberSplat = @{
MemberType = 'ScriptProperty'
Name = 'Title'
Value = { $this.Position.Role } # getter
SecondValue = { $this.Position.Role = $args[0] } # setter
}
$user | Add-Member @addMemberSplat
$user | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Age NoteProperty int Age=29
Name NoteProperty string Name=User1
Position NoteProperty System.Management.Automation.PSCustomObject Position=@{DepartmentName=IT; Role=Manager}
StartDate NoteProperty datetime StartDate=5/5/2019 12:00:00 AM
Title ScriptProperty System.Object Title {get= $this.Position.Role ;set= $this.Position.Role = $args[0] ;}
$user.Title = 'Dev Manager'
Name : User1
Age : 29
StartDate : 5/5/2019 12:00:00 AM
Position : @{DepartmentName=IT; Role=Dev Manager}
Title : Dev Manager
Perhatikan bahwa properti Judul adalah ScriptProperty yang memiliki metode Get dan Set. Saat kami menetapkan nilai baru ke properti Judul, metode Set dipanggil dan mengubah nilai properti Peran di properti Posisi.
Parameter
-Force
Secara default, Add-Member tidak dapat menambahkan anggota baru jika objek sudah memiliki anggota dengan yang sama.
Saat Anda menggunakan parameter Force, Add-Member mengganti anggota yang ada dengan anggota baru.
Anda tidak dapat menggunakan parameter Force untuk menggantikan anggota standar dari jenis.
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
MemberSet
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
NotePropertySingleMemberSet
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
NotePropertyMultiMemberSet
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-InputObject
Menentukan objek tempat anggota baru ditambahkan. Masukkan variabel yang berisi objek, atau ketik perintah atau ekspresi yang mendapatkan objek.
Properti parameter
| Jenis: | PSObject |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | True |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-MemberType
Menentukan tipe anggota yang akan ditambahkan. Parameter ini diperlukan. Nilai yang dapat diterima untuk parameter ini adalah:
- AliasProperty
- CodeMethod
- CodeProperty
- PropertiCatatan
- ScriptMethod
- ScriptProperty
Untuk informasi tentang nilai-nilai ini, lihat Enumerasi PSMemberTypes di PowerShell SDK.
Tidak semua objek memiliki setiap jenis anggota. Jika Anda menentukan jenis anggota yang tidak dimiliki objek, PowerShell mengembalikan kesalahan.
Properti parameter
| Jenis: | PSMemberTypes |
| Nilai default: | None |
| Nilai yang diterima: | AliasProperty, CodeMethod, CodeProperty, NoteProperty, ScriptMethod, ScriptProperty |
| Mendukung wildcard: | False |
| DontShow: | False |
| Alias: | Tipe |
Set parameter
MemberSet
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Name
Menentukan nama anggota yang ditambahkan cmdlet ini.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
MemberSet
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-NotePropertyMembers
Menentukan kamus hashtable atau diurutkan yang berisi pasangan kunci-nilai yang mewakili nama NoteProperty dan nilainya. Untuk informasi selengkapnya tentang tabel hash dan kamus yang diurutkan di PowerShell, lihat about_Hash_Tables.
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Properti parameter
| Jenis: | IDictionary |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
NotePropertyMultiMemberSet
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-NotePropertyName
Menentukan nama properti catatan.
Gunakan parameter ini dengan parameter
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
NotePropertySingleMemberSet
| Position: | 0 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-NotePropertyValue
Menentukan nilai properti catatan.
Gunakan parameter ini dengan parameter NotePropertyName. Parameter ini bersifat opsional.
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Properti parameter
| Jenis: | Object |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
NotePropertySingleMemberSet
| Position: | 1 |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-PassThru
Mengembalikan objek yang mewakili item dengan mana Anda bekerja. Secara default, cmdlet ini tidak menghasilkan output apa pun.
Untuk sebagian besar objek, Add-Member menambahkan anggota baru ke objek input. Namun, ketika objek input adalah string, Add-Member tidak dapat menambahkan anggota ke objek input. Untuk objek ini, gunakan parameter PassThru
Di Windows PowerShell 2.0, Add-Member menambahkan anggota hanya ke PSObject pembungkus objek, bukan ke objek. Gunakan parameter PassThru
Properti parameter
| Jenis: | SwitchParameter |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
(All)
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-SecondValue
Menentukan informasi tambahan opsional tentang AliasProperty, ScriptProperty, atau anggota CodeProperty.
Jika digunakan saat menambahkanaliasProperty
Untuk CodeProperty, nilai harus menjadi referensi ke metode yang mengimplementasikan Set pengakses. Gunakan metode GetMethod() referensi jenis untuk mendapatkan referensi ke metode . Metode harus mengambil satu parameter yang merupakan PSObject. Aksesor Get ditetapkan menggunakan parameter Nilai.
Untuk ScriptProperty , nilainya harus berupa blok skrip yang mengimplementasikan aksesor Set. Aksesor Get ditetapkan menggunakan parameter Nilai.
Properti parameter
| Jenis: | Object |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
MemberSet
| Position: | 3 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-TypeName
Menentukan nama untuk jenis tersebut.
Ketika jenis adalah kelas di namespace Sistem
Parameter ini diperkenalkan di Windows PowerShell 3.0.
Properti parameter
| Jenis: | String |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
TypeNameSet
| Position: | Named |
| Wajib: | True |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
NotePropertyMultiMemberSet
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
NotePropertySingleMemberSet
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
MemberSet
| Position: | Named |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
-Value
Menentukan nilai awal anggota yang ditambahkan. Jika Anda menambahkan AliasProperty, CodeProperty, atau anggota ScriptProperty, Anda dapat memberikan informasi tambahan menggunakan parameter SecondValue.
- Untuk aliasProperty, nilainya harus berupa nama properti yang sedang di-alias.
- Untuk CodeMethod, nilainya harus menjadi referensi ke metode . Gunakan metode
GetMethod()referensi jenis untuk mendapatkan referensi ke metode . - Untuk CodeProperty, nilai harus menjadi referensi ke metode yang mengimplementasikan aksesor Get. Gunakan metode
GetMethod()referensi jenis untuk mendapatkan referensi ke metode . referensi. Metode harus mengambil satu parameter yang merupakan PSObject. Aksesor Set ditetapkan menggunakan parameter SecondValue. - Untuk ScriptMethod, nilainya harus berupa blok skrip.
- Untuk ScriptProperty , nilainya harus berupa blok skrip yang mengimplementasikan aksesor Get. Aksesor Set ditetapkan menggunakan parameter SecondValue.
Properti parameter
| Jenis: | Object |
| Nilai default: | None |
| Mendukung wildcard: | False |
| DontShow: | False |
Set parameter
MemberSet
| Position: | 2 |
| Wajib: | False |
| Nilai dari alur: | False |
| Nilai dari alur berdasarkan nama properti: | False |
| Nilai dari argumen yang tersisa: | False |
CommonParameters
Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.
Input
PSObject
Anda dapat menyalurkan objek apa pun ke cmdlet ini.
Output
None
Secara default, cmdlet ini tidak mengembalikan output.
Object
Saat Anda menggunakan parameter PassThru, cmdlet ini mengembalikan objek yang baru diperluas.
Catatan
Anda hanya dapat menambahkan anggota ke objek jenis PSObject. Untuk menentukan apakah objek adalah objek PSObject $obj, ketik $obj -is [psobject].
objek jenis PSObject mempertahankan daftar anggota mereka dalam urutan anggota ditambahkan ke objek.
Nama
Jika Anda menyertakan nama parameter, parameter dapat muncul dalam urutan apa pun.
Anda dapat menggunakan variabel otomatis $this dalam blok skrip yang menentukan nilai properti dan metode baru. Variabel $this mengacu pada instans objek tempat properti dan metode ditambahkan. Untuk informasi selengkapnya tentang variabel $this, lihat about_Automatic_Variables.