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 is mutatja, az érték "Kész".
$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ódust egy FileInfo objektumhoz, amely kiszámítja a fájlméretet a legközelebbi MegaByte-ra. 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: Objektum összes tulajdonságának másolása egy másikba
Ez a függvény az egyik objektum összes tulajdonságát egy másik objektumba másolja.
A foreach ciklus a Get-Member parancsmaggal lekéri a From objektum minden tulajdonságát. A foreach ciklusban lévő parancsok sorozatban vannak végrehajtva az egyes tulajdonságokon.
A Add-Member parancs hozzáadja a From objektum tulajdonságát a objektumhoz NoteProperty. Az érték másolása az Érték paraméterrel történik. A Force paramétert használja az azonos tagnévvel rendelkező tagok hozzáadásához.
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
}
}
6. 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. A példa menti a PSObject a $Asset változóba.
A második parancs a [ordered] típusgyorsítót használja a nevek és értékek rendezett szótárának létrehozásához. A parancs az eredményt a $D változóba menti.
A harmadik parancs a parancsmag Add-Member paraméterével adja hozzá a $D változó szótárát a PSObject.
A
Az utolsó parancs az új objektumot objektumot a Get-Member parancsmagra irányítja. A kimenet azt mutatja, hogy az objektum típusneve Eszköz és a rendezett szótárban definiált jegyzettulajdonságok.
$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
Paraméterek
-Force
Azt jelzi, hogy ez a parancsmag új tagot ad hozzá, még az objektumnak is van egy azonos nevű egyéni tagja. A Force paraméter nem használható 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
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 |
-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:
- JegyzetTulajdonság
- AliasProperty
- ScriptProperty
- CodeProperty
- ScriptMethod
- CodeMethod
Ezekről az értékekről további információt PSMemberTypes Enumeration az MSDN-kódtárban talál.
Nem minden objektum rendelkezik minden tagtípussal. Ha olyan tagtípust ad meg, amelyet az objektum nem tartalmaz, a PowerShell hibát ad vissza.
Paramétertulajdonságok
| Típus: | PSMemberTypes |
| Alapértelmezett érték: | None |
| Elfogadott értékek: | AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet, Event, Dynamic, All |
| 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
A jegyzettulajdonságok neveinek és értékeinek kivonattábláját vagy rendezett szótárát adja meg. Írjon be egy kivonattáblát vagy szótárt, amelyben a kulcsok a jegyzettulajdonságok nevei, az értékek pedig a jegyzettulajdonságok értékei.
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 lehet 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, ScriptProperty, CodePropertyvagy CodeMethod tagokat.
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 egy karakterlánctulajdonság alternatív nevét biztosító
A SecondValue paraméterrel további ScriptBlock- adhat meg ScriptProperty tag hozzáadásakor. A Érték paraméterben megadott első ScriptBlockegy változó értékének lekérésére szolgál. A második ScriptBlock, amely a SecondValue paraméterben van megadva, egy változó értékének beállítására szolgál.
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, CodeProperty, ScriptProperty vagy CodeMethod tagot ad hozzá, a SecondValue paraméter használatával megadhat további információkat.
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
Ehhez a parancsmaghoz bármilyen objektumtípust csövezhet.
Kimenetek
None or System.Object
A PassThru paraméter használatakor ez a parancsmag az újonnan kiterjesztett objektumot adja vissza. Ellenkező esetben ez a parancsmag nem hoz létre kimenetet.
Jegyzetek
Csak a PSObject objektumok -is operátort.
Ha például egy $obj változóban tárolt objektumot szeretne tesztelni, írja be a $obj -is [PSObject].
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.