Add-Member
Voegt aangepaste eigenschappen en methoden toe aan een exemplaar van een PowerShell-object.
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
Met de Add-Member cmdlet kunt u leden (eigenschappen en methoden) toevoegen aan een exemplaar van een PowerShell-object. U kunt bijvoorbeeld een NoteProperty-lid toevoegen dat een beschrijving van het object of een ScriptMethod-lid bevat dat een script uitvoert om het object te wijzigen.
Als u het object wilt gebruiken Add-Member, sluist u het object door Add-Memberof gebruikt u de parameter InputObject om het object op te geven.
De parameter MemberType geeft het type lid aan dat u wilt toevoegen. De naamparameter wijst een naam toe aan het nieuwe lid en met de parameter Waarde wordt de waarde van het lid ingesteld.
De eigenschappen en methoden die u toevoegt, worden alleen toegevoegd aan het specifieke exemplaar van het object dat u opgeeft. Add-Member wijzigt het objecttype niet. Gebruik de Add-Type cmdlet om een nieuw objecttype te maken.
U kunt de Export-Clixml cmdlet ook gebruiken om het exemplaar van het object op te slaan, inclusief de extra leden, in een bestand. Vervolgens kunt u de Import-Clixml cmdlet gebruiken om het exemplaar van het object opnieuw te maken op basis van de informatie die is opgeslagen in het geëxporteerde bestand.
Vanaf Windows PowerShell 3.0 Add-Member beschikt u over nieuwe functies waarmee u gemakkelijker notitie-eigenschappen aan objecten kunt toevoegen.
U kunt de parameters NotePropertyName en NotePropertyValue gebruiken om een notitieeigenschap te definiëren of de parameter NotePropertyMembers te gebruiken, die een hash-tabel met namen en waarden van notitie-eigenschappen gebruikt.
Vanaf Windows PowerShell 3.0 is ook de PassThru-parameter, die een uitvoerobject genereert, minder vaak nodig. Add-Member voegt nu de nieuwe leden rechtstreeks toe aan het invoerobject van meer typen. Zie de beschrijving van de PassThru-parameter voor meer informatie.
Voorbeelden
Voorbeeld 1: Een notitieeigenschap toevoegen aan een PSObject
In het volgende voorbeeld wordt een eigenschap Statusnotitie met de waarde Gereed toegevoegd aan het FileInfo-object dat het Test.txt bestand vertegenwoordigt.
De eerste opdracht maakt gebruik van de Get-ChildItem cmdlet om een FileInfo-object op te halen dat het Test.txt bestand vertegenwoordigt. Deze wordt opgeslagen in de $a variabele.
Met de tweede opdracht wordt de eigenschap Notitie toegevoegd aan het object in $a.
De derde opdracht maakt gebruik van puntnotatie om de waarde van de eigenschap Status van het object in $aop te halen. Zoals in de uitvoer wordt weergegeven, is de waarde Gereed.
$A = Get-ChildItem c:\ps-test\test.txt
$A | Add-Member -NotePropertyName Status -NotePropertyValue Done
$A.Status
Done
Voorbeeld 2: Een aliaseigenschap toevoegen aan een PSObject
In het volgende voorbeeld wordt een aliaseigenschap Grootte toegevoegd aan het object dat het Test.txt bestand vertegenwoordigt. De nieuwe eigenschap is een alias voor de eigenschap Length .
De eerste opdracht gebruikt de Get-ChildItem cmdlet om het Test.txtFileInfo-object op te halen.
Met de tweede opdracht wordt de aliaseigenschap Grootte toegevoegd. De derde opdracht maakt gebruik van puntnotatie om de waarde van de nieuwe eigenschap Grootte op te halen.
$A = Get-ChildItem C:\Temp\test.txt
$A | Add-Member -MemberType AliasProperty -Name Size -Value Length
$A.Size
2394
Voorbeeld 3: een eigenschap StringUse-notitie toevoegen aan een tekenreeks
In dit voorbeeld wordt de eigenschap StringUse-notitie toegevoegd aan een tekenreeks.
Omdat Add-Member u geen typen kunt toevoegen aan tekenreeksinvoerobjecten , kunt u de Parameter PassThru opgeven om een uitvoerobject te genereren. Met de laatste opdracht in het voorbeeld wordt de nieuwe eigenschap weergegeven.
In dit voorbeeld wordt de parameter NotePropertyMembers gebruikt. De waarde van de parameter NotePropertyMembers is een hash-tabel. De sleutel is de naam van de notitie-eigenschap, StringUse en de waarde is de waarde van de notitie-eigenschap, Weergave.
$A = "A string"
$A = $A | Add-Member -NotePropertyMembers @{StringUse="Display"} -PassThru
$A.StringUse
Display
Voorbeeld 4: Een scriptmethode toevoegen aan een FileInfo-object
In dit voorbeeld wordt de SizeInMB-scriptmethode toegevoegd aan een FileInfo-object waarmee de bestandsgrootte wordt berekend op de dichtstbijzijnde MegaByte. Met de tweede opdracht maakt u een ScriptBlock die gebruikmaakt van de statische roundmethode van het [math] type om de bestandsgrootte af te ronden naar de tweede decimale plaats.
De parameter Waarde maakt ook gebruik van de $This automatische variabele, die het huidige object vertegenwoordigt. De $This variabele is alleen geldig in scriptblokken waarmee nieuwe eigenschappen en methoden worden gedefinieerd.
De laatste opdracht maakt gebruik van puntnotatie om de nieuwe SizeInMB-scriptmethode op het object in de $A variabele aan te roepen.
$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
Voorbeeld 5: Een aangepast object maken
In dit voorbeeld wordt een aangepast assetobject gemaakt.
De New-Object cmdlet maakt een PSObject. In het voorbeeld wordt het PSObject opgeslagen in de $Asset variabele.
Met de tweede opdracht wordt de [ordered] typeversneller gebruikt om een geordende woordenlijst met namen en waarden te maken. Met de opdracht wordt het resultaat opgeslagen in de $D variabele.
De derde opdracht maakt gebruik van de parameter NotePropertyMembers van de Add-Member cmdlet om de woordenlijst in de $D variabele toe te voegen aan het PSObject.
De eigenschap TypeName wijst een nieuwe naam, Asset, toe aan het PSObject.
Met de laatste opdracht wordt het nieuwe assetobject naar de Get-Member cmdlet uitgevoerd. In de uitvoer ziet u dat het object een typenaam van Asset heeft en de notitie-eigenschappen die we hebben gedefinieerd in de geordende woordenlijst.
$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
Parameters
Hiermee wordt aangegeven dat met deze cmdlet een nieuw lid wordt toegevoegd, zelfs als het object een aangepast lid met dezelfde naam heeft. U kunt de parameter Force niet gebruiken om een standaardlid van een type te vervangen.
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u het object waaraan het nieuwe lid wordt toegevoegd. Voer een variabele in die de objecten bevat of typ een opdracht of expressie waarmee de objecten worden opgehaald.
| Type: | PSObject |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | True |
| Accept wildcard characters: | False |
Hiermee geeft u het type van het lid dat moet worden toegevoegd. Deze parameter is vereist. De aanvaardbare waarden voor deze parameter zijn:
- NoteProperty
- AliasProperty
- ScriptProperty
- CodeProperty
- ScriptMethod
- CodeMethod
Zie de opsomming PSMemberTypes in de PowerShell SDK voor meer informatie over deze waarden.
Niet alle objecten hebben elk type lid. Als u een lidtype opgeeft dat het object niet heeft, retourneert PowerShell een fout.
| 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 |
Hiermee geeft u de naam op van het lid dat met deze cmdlet wordt toegevoegd.
| Type: | String |
| Position: | 1 |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u een hash-tabel of geordende woordenlijst met notitieeigenschapsnamen en -waarden op. Typ een hash-tabel of woordenlijst waarin de sleutels namen van eigenschappen noteren en de waarden noteren eigenschapswaarden.
Zie about_Hash_Tables voor meer informatie over hashtabellen en geordende woordenlijsten in PowerShell.
Deze parameter is geïntroduceerd in Windows PowerShell 3.0.
| Type: | IDictionary |
| Position: | 0 |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u de naam van de notitieeigenschap.
Gebruik deze parameter met de parameter NotePropertyValue . Deze parameter is optioneel.
Deze parameter is geïntroduceerd in Windows PowerShell 3.0.
| Type: | String |
| Position: | 0 |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u de waarde van de notitie-eigenschap.
Gebruik deze parameter met de parameter NotePropertyName . Deze parameter is optioneel.
Deze parameter is geïntroduceerd in Windows PowerShell 3.0.
| Type: | Object |
| Position: | 1 |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Retourneert een object dat het item aangeeft waarmee u werkt. Deze cmdlet genereert standaard geen uitvoer.
Voor de meeste objecten voegt u de nieuwe leden toe aan het invoerobject Add-Member .
Wanneer het invoerobject echter een tekenreeks is, Add-Member kan het lid niet aan het invoerobject worden toegevoegd.
Gebruik voor deze objecten de parameter PassThru om een uitvoerobject te maken.
Voeg in Windows PowerShell 2.0 Add-Member alleen leden toe aan de PSObject-wrapper van objecten, niet aan het object.
Gebruik de parameter PassThru om een uitvoerobject te maken voor elk object met een PSObject-wrapper .
| Type: | SwitchParameter |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u optionele aanvullende informatie over AliasProperty, ScriptProperty, CodeProperty of CodeMethod-leden .
Als deze parameter wordt gebruikt bij het toevoegen van een AliasProperty, moet dit een gegevenstype zijn. Er wordt een conversie naar het opgegeven gegevenstype toegevoegd aan de waarde van aliasproperty.
Als u bijvoorbeeld een AliasProperty toevoegt die een alternatieve naam voor een tekenreekseigenschap biedt, kunt u ook een SecondValue-parameter van System.Int32 opgeven om aan te geven dat de waarde van die tekenreekseigenschap moet worden geconverteerd naar een geheel getal wanneer deze wordt geopend met behulp van de bijbehorende AliasProperty.
U kunt de parameter SecondValue gebruiken om een extra ScriptBlock op te geven bij het toevoegen van een ScriptProperty-lid . De eerste ScriptBlock, opgegeven in de parameter Value , wordt gebruikt om de waarde van een variabele op te halen. De tweede ScriptBlock, opgegeven in de parameter SecondValue , wordt gebruikt om de waarde van een variabele in te stellen.
| Type: | Object |
| Position: | 3 |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u een naam voor het type.
Wanneer het type een klasse is in de Systeemnaamruimte of een type dat een typeversneller heeft, kunt u de korte naam van het type invoeren. Anders is de volledige typenaam vereist. Deze parameter is alleen van kracht wanneer het InputObject een PSObject is.
Deze parameter is geïntroduceerd in Windows PowerShell 3.0.
| Type: | String |
| Position: | Named |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Hiermee geeft u de initiële waarde van het toegevoegde lid. Als u een AliasProperty-, CodeProperty-, ScriptProperty - of CodeMethod-lid toevoegt , kunt u optioneel aanvullende informatie opgeven met behulp van de parameter SecondValue .
| Type: | Object |
| Position: | 2 |
| Default value: | None |
| Accept pipeline input: | False |
| Accept wildcard characters: | False |
Invoerwaarden
U kunt elk objecttype doorsluisen naar deze cmdlet.
Uitvoerwaarden
None or System.Object
Wanneer u de parameter PassThru gebruikt, retourneert deze cmdlet het zojuist uitgebreide object. Anders genereert deze cmdlet geen uitvoer.
Notities
U kunt alleen leden toevoegen aan PSObject-objecten . Gebruik de -is operator om te bepalen of een object een PSObject-object is.
Als u bijvoorbeeld een object wilt testen dat is opgeslagen in de $obj variabele, typt u $obj -is [PSObject].
De namen van de parameters MemberType, Name, Value en SecondValue zijn optioneel. Als u de parameternamen weglaat, moeten de niet-benoemde parameterwaarden in deze volgorde worden weergegeven: MemberType, Name, Value en SecondValue.
Als u de parameternamen opneemt, kunnen de parameters in elke volgorde worden weergegeven.
U kunt de $this automatische variabele gebruiken in scriptblokken waarmee de waarden van nieuwe eigenschappen en methoden worden gedefinieerd.
De $this variabele verwijst naar het exemplaar van het object waaraan de eigenschappen en methoden worden toegevoegd. Zie about_Automatic_Variables voor meer informatie over de $this variabele.
Verwante koppelingen
Feedback
Feedback verzenden en weergeven voor