Add-Member
Bir PowerShell nesnesinin örneğine özel özellikler ve yöntemler ekler.
Syntax
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>]
Description
cmdlet'i Add-Member
, Bir PowerShell nesnesinin örneğine üye (özellikler ve yöntemler) eklemenize olanak tanır. Örneğin, nesnenin açıklamasını içeren bir NoteProperty üyesi veya nesneyi değiştirmek için betik çalıştıran bir ScriptMethod üyesi ekleyebilirsiniz.
kullanmak Add-Member
için nesnesini Add-Member
öğesine yöneltin veya nesneyi belirtmek için InputObject parametresini kullanın.
MemberType parametresi, eklemek istediğiniz üye türünü gösterir. Name parametresi yeni üyeye bir ad atar ve Value parametresi üyenin değerini ayarlar.
Eklediğiniz özellikler ve yöntemler yalnızca belirttiğiniz nesnenin belirli örneğine eklenir. Add-Member
nesne türünü değiştirmez. Yeni bir nesne türü oluşturmak için cmdlet'ini Add-Type
kullanın.
Ek üyeler de dahil olmak üzere nesnenin örneğini bir dosyaya kaydetmek için cmdlet'ini de kullanabilirsiniz Export-Clixml
. Ardından, dışarı aktarılan dosyada Import-Clixml
depolanan bilgilerden nesnenin örneğini yeniden oluşturmak için cmdlet'ini kullanabilirsiniz.
Windows PowerShell 3.0 sürümünden başlayarak, Add-Member
nesnelere not özellikleri eklemeyi kolaylaştıran yeni özelliklere sahiptir.
NotePropertyName ve NotePropertyValue parametrelerini kullanarak bir not özelliği tanımlayabilir veya not özellik adlarının ve değerlerinin karma tablosunu alan NotePropertyMembers parametresini kullanabilirsiniz.
Ayrıca, Windows PowerShell 3.0'da başlayarak, bir çıkış nesnesi oluşturan PassThru parametresine daha az sıklıkta ihtiyaç duyulmaktadır. Add-Member
şimdi yeni üyeleri doğrudan daha fazla türde giriş nesnesine ekler. Daha fazla bilgi için bkz. PassThru parametre açıklaması.
Örnekler
Örnek 1: PSObject'e not özelliği ekleme
Aşağıdaki örnek, dosyayı temsil eden Test.txt
FileInfo nesnesine "Bitti" değerine sahip bir Durum notu özelliği ekler.
İlk komut, cmdlet'ini Get-ChildItem
kullanarak dosyayı temsil eden Test.txt
bir FileInfo nesnesi alır. Değişkenine $a
kaydeder.
İkinci komut, içindeki nesnesine $a
not özelliğini ekler.
Üçüncü komut, içindeki $a
nesnesinin Status özelliğinin değerini almak için noktalı gösterimi kullanır. Çıktıda gösterildiği gibi değer "Bitti" şeklindedir.
$A = Get-ChildItem c:\ps-test\test.txt
$A | Add-Member -NotePropertyName Status -NotePropertyValue Done
$A.Status
Done
Örnek 2: PSObject'e diğer ad özelliği ekleme
Aşağıdaki örnek, dosyayı temsil Test.txt
eden nesneye bir Boyut diğer adı özelliği ekler. Yeni özellik, Length özelliğinin diğer adıdır.
İlk komut FileInfo nesnesini almak için cmdlet'ini Test.txt
kullanırGet-ChildItem
.
İkinci komut Size diğer adı özelliğini ekler. Üçüncü komut, yeni Size özelliğinin değerini almak için noktalı gösterimi kullanır.
$A = Get-ChildItem C:\Temp\test.txt
$A | Add-Member -MemberType AliasProperty -Name Size -Value Length
$A.Size
2394
Örnek 3: StringUse not özelliğini bir dizeye ekleme
Bu örnek StringUse not özelliğini bir dizeye ekler.
Add-Member
Dize giriş nesnelerine tür eklenemediğinden, çıkış nesnesi oluşturmak için PassThru parametresini belirtebilirsiniz. Örnekteki son komut yeni özelliği görüntüler.
Bu örnekte NotePropertyMembers parametresi kullanılır. NotePropertyMembers parametresinin değeri bir karma tablodur. Anahtar, not özelliği adı olan StringUse ve değer de Display not özelliği değeridir.
$A = "A string"
$A = $A | Add-Member -NotePropertyMembers @{StringUse="Display"} -PassThru
$A.StringUse
Display
Örnek 4: FileInfo nesnesine betik yöntemi ekleme
Bu örnek, dosya boyutunu en yakın MegaByte'a hesaplayan fileInfo nesnesine SizeInMB betik yöntemini ekler. İkinci komut, dosya boyutunu ikinci ondalık basamağa yuvarlamak için türünden [math]
Round statik yöntemini kullanan bir ScriptBlock oluşturur.
Value parametresi, geçerli nesneyi temsil eden otomatik değişkeni de kullanır$This
. $This
değişkeni yalnızca yeni özellikleri ve yöntemleri tanımlayan betik bloklarında geçerlidir.
Son komut, değişkendeki nesnede $A
yeni SizeInMB betik yöntemini çağırmak için noktalı gösterimi kullanır.
$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
Örnek 5: Bir nesnenin tüm özelliklerini başka bir nesneye kopyalama
Bu işlev, bir nesnenin tüm özelliklerini başka bir nesneye kopyalar.
döngüsü, foreach
From nesnesinin Get-Member
özelliklerinin her birini almak için cmdlet'ini kullanır. Döngü içindeki foreach
komutlar, özelliklerin her birinde seri olarak gerçekleştirilir.
Komut, Add-Member
From nesnesinin özelliğini To nesnesine NoteProperty olarak ekler. Değer, Value parametresi kullanılarak kopyalanır. Aynı üye adına sahip üyeleri eklemek için Force parametresini kullanır.
function Copy-Property ($From, $To)
{
$properties = Get-Member -InputObject $From -MemberType Property
foreach ($p in $properties)
{
$To | Add-Member -MemberType NoteProperty -Name $p.Name -Value $From.$($p.Name) -Force
}
}
Örnek 6: Özel bir nesne İçerik Oluşturucu
Bu örnek bir Asset özel nesnesi oluşturur.
cmdlet'i New-Object
bir PSObject oluşturur. Örnek , PSObject'i değişkenine $Asset
kaydeder.
İkinci komut, ad ve değerlerden oluşan sıralı bir sözlük oluşturmak için tür hızlandırıcısını kullanır [ordered]
. komutu sonucu değişkenine $D
kaydeder.
Üçüncü komut, değişkenindeki sözlüğü PSObject'e eklemek için cmdlet'in Add-Member
$D
NotePropertyMembers parametresini kullanır.
TypeName özelliği PSObject'e yeni bir ad (Asset) atar.
Son komut, yeni Asset nesnesini cmdlet'ine Get-Member
aktarır. Çıkış, nesnenin varlık türüne ve sıralı sözlükte tanımladığımız not özelliklerine sahip olduğunu gösterir.
$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
Parametreler
-Force
Bu cmdlet'in, nesnenin aynı ada sahip özel bir üyesi olsa bile yeni bir üye eklediğini gösterir. Türün standart bir üyesini değiştirmek için Force parametresini kullanamazsınız.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Yeni üyenin eklendiği nesneyi belirtir. Nesneleri içeren bir değişken girin veya nesneleri alan bir komut veya ifade yazın.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-MemberType
Eklenecek üyenin türünü belirtir. Bu parametre zorunludur. Bu parametrenin kabul edilebilir değerleri şunlardır:
- NoteProperty
- AliasProperty
- ScriptProperty
- CodeProperty
- ScriptMethod
- CodeMethod
Bu değerler hakkında bilgi için bkz. PowerShell SDK'sında PSMemberTypes Numaralandırması .
Tüm nesneler her tür üyeye sahip değildir. Nesnenin sahip olmadığı bir üye türü belirtirseniz, PowerShell bir hata döndürür.
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 |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Name
Bu cmdlet'in eklediği üyenin adını belirtir.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NotePropertyMembers
Not özellik adlarının ve değerlerinin karma tablosunu veya sıralı sözlüğünü belirtir. Anahtarların not özellik adları ve değerlerin not özelliği değerleri olduğu bir karma tablo veya sözlük yazın.
PowerShell'de karma tablolar ve sıralı sözlükler hakkında daha fazla bilgi için bkz. about_Hash_Tables.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Type: | IDictionary |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NotePropertyName
Not özelliği adını belirtir.
Bu parametreyi NotePropertyValue parametresiyle kullanın. Bu parametre isteğe bağlıdır.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NotePropertyValue
Not özelliği değerini belirtir.
NotePropertyName parametresiyle bu parametreyi kullanın. Bu parametre isteğe bağlıdır.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Type: | Object |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Üzerinde çalıştığınız öğeyi temsil eden bir nesne döndürür. Varsayılan olarak bu cmdlet herhangi bir çıktı üretmez.
Çoğu nesne için yeni Add-Member
üyeleri giriş nesnesine ekler.
Ancak, giriş nesnesi bir dize olduğunda, Add-Member
üye giriş nesnesine eklenemez.
Bu nesneler için PassThru parametresini kullanarak bir çıkış nesnesi oluşturun.
Windows PowerShell 2.0'da, Add-Member
nesneye değil, yalnızca nesnelerin PSObject sarmalayıcısına üyeler eklendi.
PASSThru parametresini kullanarak PSObject sarmalayıcısı olan herhangi bir nesne için çıkış nesnesi oluşturun.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SecondValue
AliasProperty, ScriptProperty, CodeProperty veya CodeMethod üyeleri hakkında isteğe bağlı ek bilgileri belirtir.
AliasProperty eklerken kullanılırsa, bu parametre bir veri türü olmalıdır. AliasProperty değerine belirtilen veri türüne dönüştürme eklenir.
Örneğin, bir dize özelliği için alternatif ad sağlayan bir AliasProperty eklerseniz, ilgili AliasProperty kullanılarak erişildiğinde bu dize özelliğinin değerinin tamsayıya dönüştürülmesi gerektiğini belirtmek için System.Int32'ninSecondValue parametresini de belirtebilirsiniz.
Bir ScriptProperty üyesi eklerken ek bir ScriptBlock belirtmek için SecondValue parametresini kullanabilirsiniz. Value parametresinde belirtilen ilk ScriptBlock, bir değişkenin değerini almak için kullanılır. SecondValue parametresinde belirtilen ikinci ScriptBlock, bir değişkenin değerini ayarlamak için kullanılır.
Type: | Object |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TypeName
Tür için bir ad belirtir.
Tür , Sistem ad alanında bir sınıf veya tür hızlandırıcısı olan bir tür olduğunda, türün kısa adını girebilirsiniz. Aksi takdirde, tam tür adı gereklidir. Bu parametre yalnızca InputObject bir PSObject olduğunda etkilidir.
Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Value
Eklenen üyenin başlangıç değerini belirtir. AliasProperty, CodeProperty, ScriptProperty veya CodeMethod üyesi eklerseniz SecondValue parametresini kullanarak isteğe bağlı ek bilgiler sağlayabilirsiniz.
Type: | Object |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Girişler
Herhangi bir nesne türünü bu cmdlet'e geçirebilirsiniz.
Çıkışlar
None or System.Object
PassThru parametresini kullandığınızda, bu cmdlet yeni genişletilmiş nesneyi döndürür. Aksi takdirde, bu cmdlet herhangi bir çıkış oluşturmaz.
Notlar
Yalnızca PSObject nesnelerine üye ekleyebilirsiniz. Bir nesnenin PSObject nesnesi olup olmadığını belirlemek için işlecini -is
kullanın.
Örneğin, değişkeninde $obj
depolanan bir nesneyi test etmek için yazın $obj -is [PSObject]
.
MemberType, Name, Value ve SecondValue parametrelerinin adları isteğe bağlıdır. Parametre adlarını atlarsanız, adlandırılmamış parametre değerleri şu sırada görünmelidir: MemberType, Name, Value ve SecondValue.
Parametre adlarını eklerseniz, parametreler herhangi bir sırada görüntülenebilir.
Yeni özelliklerin $this
ve yöntemlerin değerlerini tanımlayan betik bloklarında otomatik değişkeni kullanabilirsiniz.
$this
değişkeni, özelliklerin ve yöntemlerin eklendiği nesnenin örneğine başvurur. Değişken hakkında $this
daha fazla bilgi için bkz. about_Automatic_Variables.