Aracılığıyla paylaş


Add-Member

PowerShell nesnesinin bir örneğine özel özellikler ve yöntemler ekler.

Sözdizimi

TypeNameSet EnterprisePublishing

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>]

Description

Add-Member cmdlet'i, PowerShell nesnesinin bir ö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 bir betik çalıştıran ScriptMethod üyesi ekleyebilirsiniz.

Add-Memberkullanmak 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. Adı 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 bir örneğine eklenir. Add-Member nesne türünü değiştirmez. Yeni bir nesne türü oluşturmak için Add-Type cmdlet'ini kullanın.

Ayrıca Export-Clixml cmdlet'ini kullanarak ek üyeler de dahil olmak üzere nesnenin örneğini bir dosyaya kaydedebilirsiniz. Ardından Import-Clixml cmdlet'ini kullanarak dışarı aktarılan dosyada depolanan bilgilerden nesnenin örneğini yeniden oluşturabilirsiniz.

Windows PowerShell 3.0'da Add-Member, nesnelere not özellikleri eklemeyi kolaylaştıran yeni özelliklere sahiptir. Not özelliğini tanımlamak için NotePropertyName ve NotePropertyValue parametrelerini kullanabilir 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 parametresi daha az sıklıkta gereklidir. Add-Member artık yeni üyeleri daha fazla türün giriş nesnesine doğrudan ekler. Daha fazla bilgi için PassThru parametre açıklamasına bakın.

Örnekler

Örnek 1: PSObject'e not özelliği ekleme

Aşağıdaki örnek, dosyasını temsil eden FileInfo nesnesine "Bitti" değerine sahip bir Test.txt not özelliği ekler.

İlk komut, Get-ChildItem dosyasını temsil eden bir FileInfo nesnesi almak için Test.txt cmdlet'ini kullanır. $a değişkenine kaydeder.

İkinci komut, $aiçerisindeki nesneye not özelliği ekler.

Üçüncü komut, içindeki nesnesinin $a özelliğinin değerini almak için nokta gösterimini kullanır. Çıktıda gösterildiği gibi, değer Done'dır.

$A = Get-ChildItem C:\ps-test\test.txt
$A | Add-Member -NotePropertyName Status -NotePropertyValue Done
$A.Status
Done

Örnek 2: Bir PSObject'e alias özelliği ekleme

Aşağıdaki örnek, dosyasını temsil eden nesneye bir Test.txt diğer ad özelliği ekler. Yeni özellik, Length özelliği için başka bir addır.

İlk komut, Get-ChildItemTest.txt nesnesini almak için cmdlet'ini kullanır.

İkinci komut, Boyut diğer ad özelliğini ekler. Üçüncü komut, yeni Boyutu ö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: Bir dize ekleyin Bir dizeye not özelliği ekleme

Bu örnek dizeye StringUse not özelliğini ekler. Add-Member String giriş nesnelerine tür ekleyemediğ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 not özelliği değeri olan Display'dur.

$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 bir FileInfo nesnesine SizeInMB betik yöntemini ekler. İkinci komut, dosya boyutunu ikinci ondalık basamağa yuvarlarken türünden Round statik yöntemini kullanan bir [Math] oluşturur.

Value parametresi, geçerli nesneyi temsil eden $this otomatik değişkenini de kullanır. $this değişkeni yalnızca yeni özellikleri ve yöntemleri tanımlayan betik bloklarında geçerlidir.

Son komut, değişkenindeki nesnede yeni $A 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: Özel nesne oluşturma

Bu örnek, özel nesne bir Varlığı oluşturur.

New-Object cmdlet'i, değişkenine kaydedilmiş bir $Asset oluşturur. [ordered] tür hızlandırıcısı, $d değişkeninde depolanan sıralı bir sözlük oluşturur. Piping $Asset ile Add-Member, sözlükteki anahtar-değer çiftlerini nesneye NoteProperty üyeleri olarak ekler. TypeName parametresi, Assettürüne atar. Get-Member cmdlet'i nesnenin türünü ve özelliklerini gösterir. Ancak özellikler, eklendikleri sırada değil alfabetik sırada listelenir.

$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

Özelliklerin ham listesini incelemek, özellikleri nesneye eklendikleri sırayla gösterir. Format-Table, bu örnekte Get-Memberbenzer bir çıktı oluşturmak için kullanılır.

Örnek 6: Nesneye AliasProperty ekleme

Bu örnekte, iki NoteProperty üyesi içeren özel bir nesne oluşturacağız. NoteProperty türü, özelliğinde depolanan değerin türünü yansıtır. Bu durumda, Age özelliği bir dizedir.

$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

IntAge özelliği, Yaş özelliği için bir AliasProperty, ancak türün uint32olması garanti edilir.

Örnek 7: Özel bir nesneye get ve set yöntemleri ekleme

Bu örnek, derinlemesine iç içe geçmiş bir özelliğe erişen Get ve Set yöntemlerinin nasıl tanımlanacağını göstermektedir.

$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

Title özelliğinin Get ve Set yöntemine sahip bir ScriptProperty olduğuna dikkat edin. Title özelliğine yeni bir değer atadığımızda Set yöntemi çağrılır ve Position özelliğindeki Rol özelliğinin değerini değiştirir.

Parametreler

-Force

Varsayılan olarak, nesnenin zaten aynı üyesi varsa, Add-Member yeni üye ekleyemez. Zorla parametresini kullandığınızda, Add-Member mevcut üyeyi yeni üyeyle değiştirir. Türün standart bir üyesini değiştirmek için Force parametresini kullanamazsınız.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

MemberSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
NotePropertySingleMemberSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
NotePropertyMultiMemberSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer: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.

Parametre özellikleri

Tür:PSObject
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:True
İşlem hattından gelen değer:True
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-MemberType

Eklenecek üyenin türünü belirtir. Bu parametre gereklidir. Bu parametre için kabul edilebilir değerler şunlardır:

  • AliasProperty
  • CodeMethod
  • CodeProperty
  • Not Özelliği
  • ScriptMethod
  • ScriptProperty

Bu değerler hakkında bilgi için, PowerShell SDK'sında PSMemberTypes Numaralandırıcı bölümüne bakın.

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.

Parametre özellikleri

Tür:PSMemberTypes
Default value:None
Kabul edilen değerler:AliasProperty, CodeMethod, CodeProperty, NoteProperty, ScriptMethod, ScriptProperty
Joker karakterleri destekler:False
DontShow:False
Diğer adlar:Türü

Parametre kümeleri

MemberSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Name

Bu cmdlet'in eklediği üyenin adını belirtir.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

MemberSet
Position:1
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-NotePropertyMembers

NoteProperty adlarını ve değerlerini temsil eden anahtar-değer çiftini içeren bir karma tablo veya sıralı sözlük belirtir. 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.

Parametre özellikleri

Tür:IDictionary
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

NotePropertyMultiMemberSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-NotePropertyName

Not özelliğinin 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.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

NotePropertySingleMemberSet
Position:0
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-NotePropertyValue

Not özelliği değerini belirtir.

Bu parametreyi NotePropertyName parametresiyle kullanın. Bu parametre isteğe bağlıdır.

Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.

Parametre özellikleri

Tür:Object
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

NotePropertySingleMemberSet
Position:1
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-PassThru

Üzerinde çalıştığınız öğeyi temsil eden bir nesne döndürür. Varsayılan olarak, bu cmdlet herhangi bir çıkış oluşturmaz.

Çoğu nesne için Add-Member yeni üyeleri giriş nesnesine ekler. Ancak, giriş nesnesi bir dize olduğunda, Add-Member üyeyi giriş nesnesine ekleyemez. Bu nesneler için bir çıkış nesnesi oluşturmak için PassThru parametresini kullanın.

Windows PowerShell 2.0'da, Add-Member nesneye değil, yalnızca PSObject sarmalayıcıya üye ekledi. PSObject sarmalayıcıya sahip herhangi bir nesne için çıkış nesnesi oluşturmak üzere PassThru parametresini kullanın.

Parametre özellikleri

Tür:SwitchParameter
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

(All)
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-SecondValue

AliasProperty, ScriptPropertyveya CodeProperty üyeleri hakkında isteğe bağlı ek bilgileri belirtir.

AliasPropertyeklerken kullanılırsa, bu parametre bir veri türü olmalıdır. Belirtilen veri türüne dönüştürme, AliasPropertydeğerine eklenir. Örneğin, dize özelliği için alternatif bir ad sağlayan bir AliasProperty eklerseniz, System.Int32SecondValue parametresini de belirterek ilgili AliasPropertykullanılarak erişildiğinde bu dize özelliğinin değerinin tamsayıya dönüştürülmesi gerektiğini belirtebilirsiniz.

CodePropertyiçin değer, Set erişimcisini uygulayan bir yönteme referans olmalıdır. Bir metoda referans almak için tür referansının GetMethod() metodunu kullanın. yöntemi, PSObjectolan tek bir parametre almalıdır. Get erişimcisi, Değeri parametresi kullanılarak atanır.

ScriptPropertyiçin değerin Set erişimcisini uygulayan bir betik bloğu şeklinde olması gerekir. Get erişimcisi, Değeri parametresi kullanılarak atanır.

Parametre özellikleri

Tür:Object
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

MemberSet
Position:3
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-TypeName

Tür için bir ad belirtir.

Tür, System 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 PSObjectolduğunda geçerlidir.

Bu parametre Windows PowerShell 3.0'da kullanıma sunulmuştur.

Parametre özellikleri

Tür:String
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

TypeNameSet
Position:Named
Zorunlu:True
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
NotePropertyMultiMemberSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
NotePropertySingleMemberSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False
MemberSet
Position:Named
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

-Value

Eklenen üyenin ilk değerini belirtir. AliasProperty, CodePropertyveya ScriptProperty üyesi eklerseniz, SecondValue parametresini kullanarak ek bilgi sağlayabilirsiniz.

  • AliasPropertyiçin, değer, diğer adı alınan özelliğin adı olmalıdır.
  • CodeMethodiçin değerin bir yöntem başvurusu olması gerekir. Bir metoda referans almak için tür referansının GetMethod() metodunu kullanın.
  • CodePropertyiçin değer, Get erişimcisini uygulayan bir yöntemi referans göstermelidir. Bir metoda referans almak için tür referansının GetMethod() metodunu kullanın. referans yöntemi, PSObjectolan tek bir parametre almalıdır. Kümesi erişimcisi, SecondValue parametresi kullanılarak atanır.
  • ScriptMethodiçin değer bir betik bloğu olmalıdır.
  • ScriptPropertyiçin değer, Get erişimcisini uygulayan bir betik bloğu olmalıdır. Kümesi erişimcisi, SecondValue parametresi kullanılarak atanır.

Parametre özellikleri

Tür:Object
Default value:None
Joker karakterleri destekler:False
DontShow:False

Parametre kümeleri

MemberSet
Position:2
Zorunlu:False
İşlem hattından gelen değer:False
Özellik adına göre işlem hattından gelen değer:False
Kalan bağımsız değişkenlerden elde edilen değer:False

CommonParameters

Bu cmdlet yaygın parametreleri destekler: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction ve -WarningVariable. Daha fazla bilgi için bkz. about_CommonParameters.

Girişler

PSObject

Herhangi bir nesneyi bu cmdlet'e yöneltebilirsiniz.

Çıkışlar

None

Varsayılan olarak, bu cmdlet çıkış döndürmez.

Object

PassThru parametresini kullandığınızda, bu cmdlet yeni genişletilmiş nesneyi döndürür.

Notlar

Yalnızca PSObject tür nesnelerine üye ekleyebilirsiniz. Bir nesnenin PSObject nesnesi olup olmadığını belirlemek için -is işlecini kullanın. Örneğin, $obj değişkeninde depolanan bir nesneyi test etmek için $obj -is [psobject]yazın.

PSObject türü nesneleri, üyelerin listesini, üyelerin nesneye eklenme sırasına göre korur.

MemberType, Name, Valueve SecondValue parametrelerinin adları isteğe bağlıdır. Parametre adlarını atlarsanız, adsız parametre değerleri şu sırada görünmelidir: MemberType, Name, Valueve SecondValue.

Parametre adlarını eklerseniz, parametreler herhangi bir sırada görüntülenebilir.

Yeni özelliklerin ve yöntemlerin değerlerini tanımlayan betik bloklarında $this otomatik değişkenini kullanabilirsiniz. $this değişkeni, özelliklerin ve yöntemlerin eklendiği nesne örneğine başvurur. $this değişkeni hakkında daha fazla bilgi için bkz. about_Automatic_Variables.