Add-Member
Egyéni tulajdonságokat és metódusokat ad hozzá egy PowerShell-objektum egy példányához.
Syntax
TypeNameSet (Alapértelmezett)
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
A Add-Member parancsmaggal tagokat (tulajdonságokat és metódusokat) adhat hozzá egy PowerShell-objektum egy példányához. Hozzáadhat például egy NoteProperty tagot, amely tartalmazza az objektum leírását, vagy egy ScriptMethod tagot, amely szkriptet futtat az objektum módosításához.
A Add-Memberhasználatához az objektumot Add-Member, vagy az InputObject paramétert használva adja meg az objektumot.
A MemberType paraméter a hozzáadni kívánt tag típusát jelzi. A Név paraméter nevet rendel az új taghoz, és a Érték paraméter beállítja a tag értékét.
A hozzáadott tulajdonságok és metódusok csak a megadott objektum adott példányához lesznek hozzáadva.
Add-Member nem módosítja az objektum típusát. Új objektumtípus létrehozásához használja a Add-Type parancsmagot.
A Export-Clixml parancsmaggal is mentheti az objektum példányát, beleértve a további tagokat is egy fájlba. Ezután a Import-Clixml parancsmaggal újra létrehozhatja az objektum példányát az exportált fájlban tárolt információkból.
A Windows PowerShell 3.0-tól kezdve a Add-Member új funkciókkal rendelkezik, amelyek megkönnyítik a jegyzettulajdonságok hozzáadását az objektumokhoz. A jegyzettulajdonságok meghatározásához használhatja a NotePropertyName és NotePropertyValue paramétereket, vagy használhatja a NotePropertyMembers paramétert, amely a jegyzettulajdonságok nevének és értékeinek kivonattábláját veszi fel.
A Windows PowerShell 3.0-tól kezdve a kimeneti objektumot létrehozó PassThru paraméterre is ritkábban van szükség.
Add-Member mostantól közvetlenül hozzáadja az új tagokat a több típus bemeneti objektumához. További információ: PassThru paraméter leírása.
Példák
1. példa: Jegyzettulajdonság hozzáadása PSObjecthez
Az alábbi példa egy Állapot megjegyzés tulajdonságot ad hozzá a FileInfo objektumhoz, amely a Test.txt fájlt jelöli.
Az első parancs a Get-ChildItem parancsmaggal lekér egy FileInfo objektumot, amely a Test.txt fájlt jelöli. A $a változóba menti.
A második parancs hozzáadja a jegyzettulajdonságot az objektumhoz a $a.
A harmadik parancs pontjelezést használ a Állapot tulajdonság értékének lekéréséhez a $aobjektumban. Ahogy a kimenet mutatja, az érték Done.
$A = Get-ChildItem C:\ps-test\test.txt
$A | Add-Member -NotePropertyName Status -NotePropertyValue Done
$A.Status
Done
2. példa: Aliastulajdonság hozzáadása PSObjecthez
Az alábbi példa egy Size alias tulajdonságot ad hozzá a Test.txt fájlt képviselő objektumhoz. Az új tulajdonság a Length tulajdonság aliasa.
Az első parancs a Get-ChildItem parancsmagot használja a Test.txtFileInfo objektum lekéréséhez.
A második parancs hozzáadja a Size alias tulajdonságot. A harmadik parancs pontjelezést használ az új Size tulajdonság értékének lekéréséhez.
$A = Get-ChildItem C:\Temp\test.txt
$A | Add-Member -MemberType AliasProperty -Name Size -Value Length
$A.Size
2394
3. példa: StringUse jegyzettulajdonság hozzáadása sztringhez
Ez a példa hozzáadja a StringUse jegyzettulajdonságot egy sztringhez. Mivel Add-Member nem tud típusokat hozzáadni sztring bemeneti objektumokhoz, a kimeneti objektum létrehozásához megadhatja a PassThru paramétert. A példa utolsó parancsa az új tulajdonságot jeleníti meg.
Ez a példa a NotePropertyMembers paramétert használja. A NotePropertyMembers paraméter értéke kivonattábla. A kulcs a jegyzettulajdonság neve, StringUse, és az érték a jegyzettulajdonság értéke, Megjelenítési.
$A = "A string"
$A = $A | Add-Member -NotePropertyMembers @{StringUse="Display"} -PassThru
$A.StringUse
Display
4. példa: Szkriptmetódus hozzáadása FileInfo-objektumhoz
Ez a példa hozzáadja a SizeInMB szkriptmetódusát egy FileInfo objektumhoz, amely a fájlméretet a legközelebbi MegaByte-ra számítja ki. A második parancs létrehoz egy ScriptBlock, amely a típus [Math] statikus metódusát használja a fájlméret második tizedesjegyre kerekítéséhez.
Az Value paraméter az aktuális objektumot képviselő $this automatikus változót is használja. A $this változó csak olyan szkriptblokkokban érvényes, amelyek új tulajdonságokat és metódusokat határoznak meg.
Az utolsó parancs pont jelölést használ az új SizeInMB szkript metódus meghívásához az $A változó objektumán.
$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
5. példa: Egyéni objektum létrehozása
Ez a példa létrehoz egy objektumot egyéni objektumot.
A New-Object parancsmag létrehoz egy PSObject, amely a $Asset változóba van mentve. A [ordered] típusgyorsító egy rendezett szótárat hoz létre, amely a $d változóban van tárolva.
A piping $AssetAdd-Member a szótár kulcs-érték párjait adja hozzá az objektumhoz NoteProperty tagokként.
TypeName paraméter hozzárendeli a Asset típust a PSObject . A Get-Member parancsmag az objektum típusát és tulajdonságait jeleníti meg. A tulajdonságok azonban betűrendben vannak felsorolva, nem pedig a hozzáadásuk sorrendjében.
$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
A tulajdonságok nyers listájának vizsgálata a tulajdonságokat az objektumhoz adott sorrendben jeleníti meg.
Format-Table ebben a példában a Get-Member-hez hasonló kimenet létrehozására szolgál.
6. példa: AliasProperty hozzáadása objektumhoz
Ebben a példában létrehozunk egy egyéni objektumot, amely két NoteProperty tagot tartalmaz. A NoteProperty típusa a tulajdonságban tárolt érték típusát tükrözi. Ebben az esetben az Age tulajdonság egy sztring.
$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
Az IntAge tulajdonság AliasProperty az Age tulajdonsághoz, de a típus garantáltan uint32.
7. példa: Metódusok hozzáadása és beállítása egyéni objektumhoz
Ez a példa bemutatja, hogyan definiálhatja A lekérése és A mélyen beágyazott tulajdonsághoz hozzáférő metódusok beállítása.
$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
Figyelje meg, hogy a Title tulajdonság egy ScriptProperty, amely Get és Set metódussal rendelkezik. Amikor új értéket rendelünk a Cím tulajdonsághoz, a rendszer meghívja a Set metódust, és módosítja a Szerepkör tulajdonság értékét a Position tulajdonságban.
Paraméterek
-Force
Alapértelmezés szerint Add-Member nem vehet fel új tagot, ha az objektumnak már van ugyanazzal a tagjával.
A Force paraméter használatakor Add-Member lecseréli a meglévő tagot az új tagra.
Nem használhatja a Force paramétert egy normál típusú tag helyére.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
MemberSet
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
NotePropertySingleMemberSet
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
NotePropertyMultiMemberSet
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-InputObject
Azt az objektumot adja meg, amelyhez az új tag hozzá van adva. Adjon meg egy változót, amely tartalmazza az objektumokat, vagy írjon be egy parancsot vagy kifejezést, amely lekéri az objektumokat.
Paramétertulajdonságok
| Típus: | PSObject |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | True |
| Folyamatból származó érték: | True |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-MemberType
Megadja a hozzáadni kívánt tag típusát. Ez a paraméter kötelező. A paraméter elfogadható értékei a következők:
- AliasProperty
- CodeMethod
- CodeProperty
- JegyzetTulajdonság
- ScriptMethod
- ScriptProperty
Ezekről az értékekről további információt PSMemberTypes Enumeration a PowerShell SDK-ban talál.
Nem minden objektum rendelkezik minden tagtípussal. Ha olyan tagtípust ad meg, amely nem rendelkezik az objektummal, a PowerShell hibát ad vissza.
Paramétertulajdonságok
| Típus: | PSMemberTypes |
| Alapértelmezett érték: | None |
| Elfogadott értékek: | AliasProperty, CodeMethod, CodeProperty, NoteProperty, ScriptMethod, ScriptProperty |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
| Aliasok: | Típus |
Paraméterkészletek
MemberSet
| Position: | 0 |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Name
Megadja annak a tagnak a nevét, amelyet a parancsmag hozzáad.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
MemberSet
| Position: | 1 |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-NotePropertyMembers
Olyan kivonatoló vagy rendezett szótárat ad meg, amely kulcs-érték párokat tartalmaz, amelyek NoteProperty neveket és értékeiket jelölik. További információ a kivonattáblákról és a rendezett szótárakról a PowerShellben: about_Hash_Tables.
Ezt a paramétert a Windows PowerShell 3.0-ban vezettük be.
Paramétertulajdonságok
| Típus: | IDictionary |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
NotePropertyMultiMemberSet
| Position: | 0 |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-NotePropertyName
Megadja a jegyzettulajdonság nevét.
Használja ezt a paramétert a NotePropertyValue paraméterrel. Ez a paraméter nem kötelező.
Ezt a paramétert a Windows PowerShell 3.0-ban vezettük be.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
NotePropertySingleMemberSet
| Position: | 0 |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-NotePropertyValue
A jegyzettulajdonság értékét adja meg.
Használja ezt a paramétert a NotePropertyName paraméterrel. Ez a paraméter nem kötelező.
Ezt a paramétert a Windows PowerShell 3.0-ban vezettük be.
Paramétertulajdonságok
| Típus: | Object |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
NotePropertySingleMemberSet
| Position: | 1 |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-PassThru
Azt az elemet képviselő objektumot adja vissza, amellyel dolgozik. Ez a parancsmag alapértelmezés szerint nem hoz létre kimenetet.
A legtöbb objektum esetében Add-Member hozzáadja az új tagokat a bemeneti objektumhoz. Ha azonban a bemeneti objektum egy sztring, Add-Member nem tudja hozzáadni a tagot a bemeneti objektumhoz. Ezekhez az objektumokhoz használja a PassThru paramétert egy kimeneti objektum létrehozásához.
A Windows PowerShell 2.0-ban Add-Member csak a PSObject objektumburkolójához adtak hozzá tagokat, az objektumhoz nem. A PassThru paraméterrel kimeneti objektumot hozhat létre minden olyan objektumhoz, amely PSObject burkolóval rendelkezik.
Paramétertulajdonságok
| Típus: | SwitchParameter |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
(All)
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-SecondValue
Megadja AliasProperty, ScriptPropertyvagy CodeProperty tagokra vonatkozó opcionális további információkat.
Ha AliasPropertyhozzáadásakor használatos, ennek a paraméternek adattípusnak kell lennie. A megadott adattípusra való átalakítás hozzáadódik az AliasPropertyértékéhez. Ha például olyan AliasProperty ad hozzá, amely alternatív nevet ad egy karakterlánctulajdonságnak, megadhat egy SecondValue paramétert is System.Int32, amely azt jelzi, hogy a karakterlánctulajdonság értékét egész számmá kell konvertálni, amikor a megfelelő AliasProperty.
Egy CodePropertyesetében az értéknek olyan metódusra kell hivatkoznia, amely implementál egy tartozékot. Egy típushivatkozás GetMethod() metódusával kérhet le egy metódusra mutató hivatkozást. A metódusnak egyetlen paramétert kell használnia, amely egy PSObject. A Get tartozék a Érték paraméterrel van hozzárendelve.
Egy ScriptPropertyesetében az értéknek olyan szkriptblokknak kell lennie, amely implementál egy Készlet tartozékot. A Get tartozék a Érték paraméterrel van hozzárendelve.
Paramétertulajdonságok
| Típus: | Object |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
MemberSet
| Position: | 3 |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-TypeName
Megadja a típus nevét.
Ha a típus egy osztály a Rendszer névtérben, vagy egy típusgyorsítóval rendelkező típus, megadhatja a típus rövid nevét. Ellenkező esetben a teljes típusnév megadása kötelező. Ez a paraméter csak akkor érvényes, ha a InputObjectPSObject.
Ezt a paramétert a Windows PowerShell 3.0-ban vezettük be.
Paramétertulajdonságok
| Típus: | String |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
TypeNameSet
| Position: | Named |
| Kötelező: | True |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
NotePropertyMultiMemberSet
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
NotePropertySingleMemberSet
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
MemberSet
| Position: | Named |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
-Value
A hozzáadott tag kezdeti értékét adja meg. Ha AliasProperty, CodePropertyvagy ScriptProperty tagot ad hozzá, további információt a SecondValue paraméterrel adhat meg.
- Egy AliasPropertyesetében az értéknek az aliasolt tulajdonság nevének kell lennie.
- Egy CodeMethodesetében az értéknek egy metódusra való hivatkozásnak kell lennie. Egy típushivatkozás
GetMethod()metódusával kérhet le egy metódusra mutató hivatkozást. - Egy CodePropertyesetében az értéknek olyan metódusra kell hivatkoznia, amely egy Get tartozékot implementál. Egy típushivatkozás
GetMethod()metódusával kérhet le egy metódusra mutató hivatkozást. utalás. A metódusnak egyetlen paramétert kell használnia, amely egy PSObject. A Set tartozék a SecondValue paraméterrel van hozzárendelve. - Egy ScriptMethodesetében az értéknek szkriptblokknak kell lennie.
- ScriptPropertyesetén az értéknek olyan szkriptblokknak kell lennie, amely implementálja a Get tartozékot. A Set tartozék a SecondValue paraméterrel van hozzárendelve.
Paramétertulajdonságok
| Típus: | Object |
| Alapértelmezett érték: | None |
| Támogatja a helyettesítő karaktereket: | False |
| DontShow: | False |
Paraméterkészletek
MemberSet
| Position: | 2 |
| Kötelező: | False |
| Folyamatból származó érték: | False |
| Folyamatból származó érték tulajdonságnév alapján: | False |
| Fennmaradó argumentumokból származó érték: | False |
CommonParameters
Ez a parancsmag a következő gyakori paramétereket támogatja: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction és -WarningVariable. További információért lásd about_CommonParameters.
Bevitelek
PSObject
A parancsmaghoz bármilyen objektumot csövezhet.
Kimenetek
None
Ez a parancsmag alapértelmezés szerint nem ad vissza kimenetet.
Object
A PassThru paraméter használatakor ez a parancsmag az újonnan kiterjesztett objektumot adja vissza.
Jegyzetek
Csak a PSObject típusú objektumok adhat hozzá tagokat. Annak megállapításához, hogy egy objektum PSObject objektum-e, használja a -is operátort. Ha például egy $obj változóban tárolt objektumot szeretne tesztelni, írja be a $obj -is [psobject].
PSObject típusú objektumok a tagok listáját abban a sorrendben őrzik meg, hogy a tagok hozzá lettek adva az objektumhoz.
A MemberType, Name, Valueés SecondValue paraméterek neve nem kötelező. Ha kihagyja a paraméterneveket, a meg nem nevezett paraméterértékek a következő sorrendben jelennek meg: MemberType, Name, Valueés SecondValue.
Ha a paraméterneveket is tartalmazza, a paraméterek bármilyen sorrendben megjelenhetnek.
Az $this automatikus változót olyan szkriptblokkokban használhatja, amelyek új tulajdonságok és metódusok értékeit határozzák meg. A $this változó annak az objektumnak a példányára vonatkozik, amelyhez a tulajdonságokat és metódusokat hozzáadja. A $this változóval kapcsolatos további információkért lásd: about_Automatic_Variables.