Add-Member

Menambahkan properti dan metode kustom ke instans objek PowerShell.

Sintaks

Add-Member
   -InputObject <PSObject>
   -TypeName <String>
   [-PassThru]
   [<CommonParameters>]
Add-Member
   -InputObject <PSObject>
   [-TypeName <String>]
   [-Force]
   [-PassThru]
   [-NotePropertyMembers] <IDictionary>
   [<CommonParameters>]
Add-Member
   -InputObject <PSObject>
   [-TypeName <String>]
   [-Force]
   [-PassThru]
   [-NotePropertyName] <String>
   [-NotePropertyValue] <Object>
   [<CommonParameters>]
Add-Member
   -InputObject <PSObject>
   [-MemberType] <PSMemberTypes>
   [-Name] <String>
   [[-Value] <Object>]
   [[-SecondValue] <Object>]
   [-TypeName <String>]
   [-Force]
   [-PassThru]
   [<CommonParameters>]

Deskripsi

Add-Member Cmdlet 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 Add-Member, pipa objek ke Add-Member, atau gunakan parameter InputObject untuk menentukan objek .

Parameter MemberType menunjukkan jenis anggota yang ingin Anda tambahkan. Parameter Nama menetapkan nama untuk anggota baru, dan parameter Nilai menetapkan nilai anggota.

Properti dan metode yang Anda tambahkan hanya ditambahkan ke instans objek tertentu yang Anda tentukan. Add-Member tidak mengubah tipe objek. Untuk membuat jenis objek baru, gunakan Add-Type cmdlet .

Anda juga dapat menggunakan Export-Clixml cmdlet untuk menyimpan instans objek, termasuk anggota tambahan, dalam file. Kemudian Anda dapat menggunakan Import-Clixml cmdlet untuk membuat ulang instans objek dari informasi yang disimpan dalam file yang diekspor.

Mulai dari Windows PowerShell 3.0, Add-Member memiliki fitur baru yang memudahkan untuk menambahkan properti catatan ke objek. Anda dapat menggunakan parameter NotePropertyName dan NotePropertyValue untuk menentukan properti catatan atau menggunakan parameter NotePropertyMembers , yang mengambil tabel hash nama dan nilai properti catatan.

Selain itu, dimulai pada 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 dengan nilai "Selesai" ke objek FileInfo yang mewakili Test.txt file.

Perintah pertama menggunakan Get-ChildItem cmdlet untuk mendapatkan objek FileInfo yang mewakili Test.txt file. Ini menyimpannya dalam $a variabel .

Perintah kedua menambahkan properti catatan ke objek di $a.

Perintah ketiga menggunakan notasi titik untuk mendapatkan nilai properti Status objek di $a. Seperti yang ditunjukkan oleh output, nilainya adalah "Selesai".

$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 ke objek yang mewakili Test.txt file. Properti baru adalah alias untuk properti Panjang .

Perintah pertama menggunakan Get-ChildItem cmdlet untuk mendapatkan Test.txt objek FileInfo.

Perintah kedua menambahkan properti Alias ukuran . Perintah ketiga menggunakan notasi titik untuk mendapatkan nilai properti Ukuran baru.

$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 catatan StringUse 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, StringUse, dan nilainya adalah nilai properti catatan, Display.

$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 ScriptBlock yang menggunakan metode statis Round dari [math] jenis untuk membulatkan ukuran file ke tempat desimal kedua.

Parameter Nilai juga menggunakan $This variabel otomatis, yang mewakili objek saat ini. Variabel $This hanya valid dalam blok skrip yang menentukan properti dan metode baru.

Perintah terakhir menggunakan notasi titik untuk memanggil metode skrip SizeInMB baru pada objek dalam $A variabel .

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

New-Object Cmdlet membuat PSObject. Contoh menyimpan PSObject dalam $Asset variabel.

Perintah kedua menggunakan [ordered] jenis akselerator untuk membuat kamus nama dan nilai yang diurutkan. Perintah menyimpan hasil dalam $D variabel .

Perintah ketiga menggunakan parameter NotePropertyMembers dari Add-Member cmdlet untuk menambahkan kamus dalam $D variabel ke PSObject. Properti TypeName menetapkan nama baru, Aset, ke PSObject.

Perintah terakhir menyalurkan objek Aset baru ke Get-Member cmdlet. Output menunjukkan bahwa objek memiliki nama jenis Aset dan properti catatan yang kami tentukan dalam kamus yang diurutkan.

$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

TypeName: Asset

Name        MemberType   Definition
----        ----------   ----------
Equals      Method       bool Equals(System.Object obj)
GetHashCode Method       int GetHashCode()
GetType     Method       type GetType()
ToString    Method       string ToString()
Name        NoteProperty System.String Name=Server30
PSVersion   NoteProperty System.String PSVersion=4.0
System      NoteProperty System.String System=Server Core

Parameter

-Force

Menunjukkan bahwa cmdlet ini menambahkan anggota baru bahkan objek memiliki anggota kustom dengan nama yang sama. Anda tidak dapat menggunakan parameter Paksa untuk mengganti anggota standar jenis.

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

Menentukan objek tempat anggota baru ditambahkan. Masukkan variabel yang berisi objek, atau ketik perintah atau ekspresi yang mendapatkan objek.

Type:PSObject
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-MemberType

Menentukan tipe anggota yang akan ditambahkan. Parameter ini diperlukan. Nilai yang dapat diterima untuk parameter ini adalah:

  • NoteProperty
  • AliasProperty
  • ScriptProperty
  • CodeProperty
  • ScriptMethod
  • CodeMethod

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.

Type:PSMemberTypes
Aliases:Type
Accepted values:AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet, Event, Dynamic, All
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Name

Menentukan nama anggota yang ditambahkan cmdlet ini.

Type:String
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-NotePropertyMembers

Menentukan tabel hash atau kamus yang diurutkan dari nama dan nilai properti catatan. Ketik tabel hash atau kamus di mana kunci adalah nama properti catatan dan nilainya adalah nilai properti catatan.

Untuk informasi selengkapnya tentang tabel hash dan kamus yang diurutkan di PowerShell, lihat about_Hash_Tables.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Type:IDictionary
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-NotePropertyName

Menentukan nama properti catatan.

Gunakan parameter ini dengan parameter NotePropertyValue . Parameter ini bersifat opsional.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Type:String
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-NotePropertyValue

Menentukan nilai properti catatan.

Gunakan parameter ini dengan parameter NotePropertyName . Parameter ini bersifat opsional.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Type:Object
Position:1
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Mengembalikan objek yang mewakili item tempat 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 untuk membuat objek output.

Dalam Windows PowerShell 2.0, Add-Member menambahkan anggota hanya ke pembungkus objek PSObject, bukan ke objek . Gunakan parameter PassThru untuk membuat objek output untuk objek apa pun yang memiliki pembungkus PSObject .

Type:SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-SecondValue

Menentukan informasi tambahan opsional tentang anggota AliasProperty, ScriptProperty, CodeProperty, atau CodeMethod .

Jika digunakan saat menambahkan AliasProperty, parameter ini harus berupa jenis data. Konversi ke jenis data yang ditentukan ditambahkan ke nilai AliasProperty.

Misalnya, jika Anda menambahkan AliasProperty yang menyediakan nama alternatif untuk properti string, Anda juga dapat menentukan parameter SecondValueSystem.Int32 untuk menunjukkan bahwa nilai properti string tersebut harus dikonversi ke bilangan bulat saat diakses dengan menggunakan AliasProperty yang sesuai.

Anda dapat menggunakan parameter SecondValue untuk menentukan ScriptBlock tambahan saat menambahkan anggota ScriptProperty . ScriptBlock pertama, yang ditentukan dalam parameter Nilai, digunakan untuk mendapatkan nilai variabel. ScriptBlock kedua, yang ditentukan dalam parameter SecondValue, digunakan untuk mengatur nilai variabel.

Type:Object
Position:3
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-TypeName

Menentukan nama untuk jenis tersebut.

Ketika jenis adalah kelas di namespace layanan Sistem atau jenis yang memiliki akselerator jenis, Anda dapat memasukkan nama pendek jenis tersebut. Jika tidak, nama jenis lengkap diperlukan. Parameter ini hanya efektif ketika InputObject adalah PSObject.

Parameter ini diperkenalkan di Windows PowerShell 3.0.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Value

Menentukan nilai awal anggota yang ditambahkan. Jika Anda menambahkan anggota AliasProperty, CodeProperty, ScriptProperty , atau CodeMethod , Anda dapat memberikan informasi tambahan opsional dengan menggunakan parameter SecondValue .

Type:Object
Position:2
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

Input

PSObject

Anda dapat menyalurkan jenis objek apa pun ke cmdlet ini.

Output

None or System.Object

Saat Anda menggunakan parameter PassThru , cmdlet ini mengembalikan objek yang baru diperluas. Jika tidak, cmdlet ini tidak menghasilkan output apa pun.

Catatan

Anda hanya dapat menambahkan anggota ke objek PSObject . Untuk menentukan apakah objek adalah objek PSObject , gunakan -is operator .

Misalnya, untuk menguji objek yang disimpan dalam $obj variabel, ketik $obj -is [PSObject].

Nama parameter MemberType, Name, Value, dan SecondValue bersifat opsional. Jika Anda menghilangkan nama parameter, nilai parameter yang tidak disebutkan namanya harus muncul dalam urutan ini: MemberType, Name, Value, dan SecondValue.

Jika Anda menyertakan nama parameter, parameter dapat muncul dalam urutan apa pun.

Anda dapat menggunakan $this variabel otomatis 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 $this variabel, lihat about_Automatic_Variables.