Add-Member
Lägger till anpassade egenskaper och metoder i en instans av ett PowerShell-objekt.
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
Med cmdleten Add-Member
kan du lägga till medlemmar (egenskaper och metoder) i en instans av ett PowerShell-objekt. Du kan till exempel lägga till en NoteProperty-medlem som innehåller en beskrivning av objektet eller en ScriptMethod-medlem som kör ett skript för att ändra objektet.
Om du vill använda Add-Member
kan du skicka objektet till Add-Member
eller använda parametern InputObject för att ange objektet.
Parametern MemberType anger vilken typ av medlem du vill lägga till. Parametern Namn tilldelar ett namn till den nya medlemmen och parametern Value anger värdet för medlemmen.
De egenskaper och metoder som du lägger till läggs bara till i den specifika instansen av objektet som du anger. Add-Member
ändrar inte objekttypen. Om du vill skapa en ny objekttyp använder du cmdleten Add-Type
.
Du kan också använda cmdleten Export-Clixml
för att spara instansen av objektet, inklusive de ytterligare medlemmarna, i en fil. Sedan kan du använda cmdleten Import-Clixml
för att återskapa instansen av objektet från den information som lagras i den exporterade filen.
Från och med Windows PowerShell 3.0 Add-Member
har nya funktioner som gör det enklare att lägga till anteckningsegenskaper i objekt.
Du kan använda parametrarna NotePropertyName och NotePropertyValue för att definiera en anteckningsegenskap eller använda parametern NotePropertyMembers , som tar en hash-tabell med anteckningsegenskapsnamn och värden.
Från och med Windows PowerShell 3.0 behövs även parametern PassThru, som genererar ett utdataobjekt, mindre ofta. Add-Member
lägger nu till de nya medlemmarna direkt i indataobjektet för fler typer. Mer information finns i parameterbeskrivningen för PassThru .
Exempel
Exempel 1: Lägg till en anteckningsegenskap i ett PSObject
I följande exempel läggs en statusanteckningsegenskap till med värdet "Klar" i FileInfo-objektet som representerar Test.txt
filen.
Det första kommandot använder cmdleten Get-ChildItem
för att hämta ett FileInfo-objekt som representerar Test.txt
filen. Den sparar den i variabeln $a
.
Det andra kommandot lägger till anteckningsegenskapen i objektet i $a
.
Det tredje kommandot använder punktnotation för att hämta värdet för egenskapen Status för objektet i $a
. Som utdata visar är värdet "Klar".
$A = Get-ChildItem c:\ps-test\test.txt
$A | Add-Member -NotePropertyName Status -NotePropertyValue Done
$A.Status
Done
Exempel 2: Lägga till en aliasegenskap i en PSObject
I följande exempel läggs en storleksaliasegenskap till i objektet som representerar Test.txt
filen. Den nya egenskapen är ett alias för egenskapen Längd .
Det första kommandot använder cmdleten Get-ChildItem
för att hämta Test.txt
FileInfo-objektet .
Det andra kommandot lägger till egenskapen Storleksalias. Det tredje kommandot använder punktnotation för att hämta värdet för den nya egenskapen Storlek .
$A = Get-ChildItem C:\Temp\test.txt
$A | Add-Member -MemberType AliasProperty -Name Size -Value Length
$A.Size
2394
Exempel 3: Lägg till egenskapen StringUse note i en sträng
Det här exemplet lägger till egenskapen StringUse-anteckning i en sträng.
Eftersom Add-Member
det inte går att lägga till typer i Strängindataobjekt kan du ange parametern PassThru för att generera ett utdataobjekt. Det sista kommandot i exemplet visar den nya egenskapen.
I det här exemplet används parametern NotePropertyMembers . Värdet för parametern NotePropertyMembers är en hash-tabell. Nyckeln är namnet på anteckningsegenskapen StringUse och värdet är egenskapen note, Display.
$A = "A string"
$A = $A | Add-Member -NotePropertyMembers @{StringUse="Display"} -PassThru
$A.StringUse
Display
Exempel 4: Lägga till en skriptmetod i ett FileInfo-objekt
Det här exemplet lägger till metoden SizeInMB-skript i ett FileInfo-objekt som beräknar filstorleken till närmaste MegaByte. Det andra kommandot skapar en ScriptBlock som använder den statiska metoden Round från [math]
typen för att avrunda filstorleken till den andra decimalen.
Parametern Value använder också den $This
automatiska variabeln, som representerar det aktuella objektet. Variabeln $This
är endast giltig i skriptblock som definierar nya egenskaper och metoder.
Det sista kommandot använder punktnotation för att anropa den nya SizeInMB-skriptmetoden för objektet i variabeln $A
.
$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
Exempel 5: Kopiera alla egenskaper för ett objekt till en annan
Den här funktionen kopierar alla egenskaper för ett objekt till ett annat objekt.
Loopen foreach
använder cmdleten Get-Member
för att hämta var och en av egenskaperna för From-objektet . Kommandona i loopen foreach
utförs i serie på var och en av egenskaperna.
Kommandot Add-Member
lägger till egenskapen från-objektet till till-objektet som en NoteProperty. Värdet kopieras med hjälp av parametern Value . Den använder parametern Force för att lägga till medlemmar med samma medlemsnamn.
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
}
}
Exempel 6: Skapa ett anpassat objekt
Det här exemplet skapar ett anpassat objekt för tillgångar .
Cmdleten New-Object
skapar en PSObject. I exemplet sparas PSObject i variabeln $Asset
.
Det andra kommandot använder [ordered]
typacceleratorn för att skapa en ordnad ordlista med namn och värden. Kommandot sparar resultatet i variabeln $D
.
Det tredje kommandot använder parametern NotePropertyMembers för cmdleten Add-Member
för att lägga till ordlistan i variabeln $D
i PSObject.
Egenskapen TypeName tilldelar ett nytt namn, Tillgång, till PSObject.
Det sista kommandot skickar det nya tillgångsobjektet till cmdleten Get-Member
. Utdata visar att objektet har ett typnamn för Tillgång och de anteckningsegenskaper som vi definierade i den ordnade ordlistan.
$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
Parametrar
-Force
Anger att den här cmdleten lägger till en ny medlem även om objektet har en anpassad medlem med samma namn. Du kan inte använda force-parametern för att ersätta en standardmedlem av en typ.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Anger det objekt som den nya medlemmen läggs till i. Ange en variabel som innehåller objekten eller skriv ett kommando eller uttryck som hämtar objekten.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-MemberType
Anger vilken typ av medlem som ska läggas till. Den här parametern krävs. De acceptabla värdena för den här parametern är:
- NoteProperty
- AliasProperty
- ScriptProperty
- CodeProperty
- ScriptMethod
- CodeMethod
Information om dessa värden finns i PSMemberTypes Enumeration i PowerShell SDK.
Alla objekt har inte alla typer av medlemmar. Om du anger en medlemstyp som objektet inte har returnerar PowerShell ett fel.
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
Anger namnet på medlemmen som den här cmdleten lägger till.
Type: | String |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NotePropertyMembers
Anger en hash-tabell eller ordnad ordlista med anteckningsegenskapsnamn och värden. Skriv en hash-tabell eller ordlista där nycklarna är egenskapsnamn för anteckningar och värdena är egenskapsvärden för anteckningar.
Mer information om hash-tabeller och ordnade ordlistor i PowerShell finns i about_Hash_Tables.
Den här parametern introducerades i Windows PowerShell 3.0.
Type: | IDictionary |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NotePropertyName
Anger namnet på anteckningsegenskapen.
Använd den här parametern med parametern NotePropertyValue . Den här parametern är valfri.
Den här parametern introducerades i Windows PowerShell 3.0.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NotePropertyValue
Anger värdet för anteckningsegenskapen.
Använd den här parametern med parametern NotePropertyName . Den här parametern är valfri.
Den här parametern introducerades i Windows PowerShell 3.0.
Type: | Object |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-PassThru
Returnerar ett objekt som representerar det objekt som du arbetar med. Som standard genererar denna cmdlet inga utdata.
För de flesta objekt Add-Member
lägger de nya medlemmarna till indataobjektet.
Men när indataobjektet är en sträng kan Add-Member
inte lägga till medlemmen i indataobjektet.
För dessa objekt använder du parametern PassThru för att skapa ett utdataobjekt.
I Windows PowerShell 2.0 Add-Member
har endast medlemmar lagts till i PSObject-omslutningen av objekt, inte till objektet.
Använd parametern PassThru för att skapa ett utdataobjekt för alla objekt som har en PSObject-omslutning .
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SecondValue
Anger valfri ytterligare information om AliasProperty, ScriptProperty, CodeProperty eller CodeMethod-medlemmar .
Om den här parametern används när du lägger till ett AliasProperty måste den vara en datatyp. En konvertering till den angivna datatypen läggs till i värdet för AliasProperty.
Om du till exempel lägger till ett AliasProperty som ger ett alternativt namn för en strängegenskap kan du också ange parametern SecondValue i System.Int32 för att ange att värdet för strängegenskapen ska konverteras till ett heltal när du använder motsvarande AliasProperty.
Du kan använda parametern SecondValue för att ange ytterligare en ScriptBlock när du lägger till en ScriptProperty-medlem . Den första ScriptBlock, som anges i parametern Value , används för att hämta värdet för en variabel. Den andra ScriptBlock, som anges i parametern SecondValue , används för att ange värdet för en variabel.
Type: | Object |
Position: | 3 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-TypeName
Anger ett namn för typen.
När typen är en klass i systemnamnområdet eller en typ som har en typaccelerator kan du ange det korta namnet på typen. Annars krävs det fullständiga typnamnet. Den här parametern gäller endast när InputObject är ett PSObject.
Den här parametern introducerades i Windows PowerShell 3.0.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Value
Anger det ursprungliga värdet för den tillagda medlemmen. Om du lägger till en AliasProperty-, CodeProperty-, ScriptProperty - eller CodeMethod-medlem kan du ange valfri ytterligare information med hjälp av parametern SecondValue .
Type: | Object |
Position: | 2 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Indata
Du kan skicka alla objekttyper till den här cmdleten.
Utdata
None or System.Object
När du använder parametern PassThru returnerar den här cmdleten det nyligen utökade objektet. Annars genererar den här cmdleten inga utdata.
Kommentarer
Du kan bara lägga till medlemmar i PSObject-objekt . Använd operatorn -is
för att avgöra om ett objekt är ett PSObject-objekt.
Om du till exempel vill testa ett objekt som lagras i variabeln $obj
skriver du $obj -is [PSObject]
.
Namnen på parametrarna MemberType, Name, Value och SecondValue är valfria. Om du utelämnar parameternamnen måste de namnlösa parametervärdena visas i den här ordningen: MemberType, Name, Value och SecondValue.
Om du inkluderar parameternamnen kan parametrarna visas i valfri ordning.
Du kan använda den $this
automatiska variabeln i skriptblock som definierar värdena för nya egenskaper och metoder.
Variabeln $this
refererar till instansen av objektet som egenskaperna och metoderna läggs till i. Mer information om variabeln finns i $this
about_Automatic_Variables.