Add-Member
Přidá vlastní vlastnosti a metody do instance objektu PowerShellu.
Syntaxe
Add-Member
-InputObject <PSObject>
-TypeName <String>
[-PassThru]
[<CommonParameters>]
Add-Member
[-NotePropertyMembers] <IDictionary>
-InputObject <PSObject>
[-TypeName <String>]
[-Force]
[-PassThru]
[<CommonParameters>]
Add-Member
[-NotePropertyName] <String>
[-NotePropertyValue] <Object>
-InputObject <PSObject>
[-TypeName <String>]
[-Force]
[-PassThru]
[<CommonParameters>]
Add-Member
[-MemberType] <PSMemberTypes>
[-Name] <String>
[[-Value] <Object>]
[[-SecondValue] <Object>]
-InputObject <PSObject>
[-TypeName <String>]
[-Force]
[-PassThru]
[<CommonParameters>]
Description
Rutina Add-Member
umožňuje přidat členy (vlastnosti a metody) do instance objektu PowerShellu. Můžete například přidat člena NoteProperty, který obsahuje popis objektu nebo ScriptMethod člen, který spouští skript pro změnu objektu.
Chcete-li použít Add-Member
, přeskakujte objekt do Add-Member
nebo pomocí parametru InputObject určete objekt.
Parametr MemberType označuje typ člena, který chcete přidat. Parametr Name přiřadí novému členu název a parametr Hodnota nastaví hodnotu člena.
Vlastnosti a metody, které přidáte, se přidají pouze do konkrétní instance objektu, který zadáte.
Add-Member
typ objektu nezmění. Pokud chcete vytvořit nový typ objektu, použijte rutinu Add-Type
.
Pomocí rutiny Export-Clixml
můžete také uložit instanci objektu, včetně dalších členů, do souboru. Potom můžete pomocí rutiny Import-Clixml
znovu vytvořit instanci objektu z informací uložených v exportovaného souboru.
Počínaje Windows PowerShellem 3.0 má Add-Member
nové funkce, které usnadňují přidávání vlastností poznámek k objektům.
Pomocí parametrů NotePropertyName a NotePropertyValue můžete definovat vlastnost poznámky nebo použít NotePropertyMembers parametr, který přebírá tabulku hash názvů a hodnot vlastností poznámek.
Počínaje Windows PowerShellem 3.0 je také méně často potřeba parametr PassThru, který generuje výstupní objekt.
Add-Member
teď nové členy přidá přímo do vstupního objektu více typů. Další informace najdete v popisu parametru PassThru.
Příklady
Příklad 1: Přidání vlastnosti poznámky do objektu PSObject
Následující příklad přidá Status note vlastnost s hodnotou "Done" do FileInfo objektu, který představuje Test.txt
soubor.
První příkaz pomocí rutiny Get-ChildItem
získá objekt FileInfo představující Test.txt
soubor. Uloží ho do proměnné $a
.
Druhý příkaz přidá vlastnost poznámky k objektu v $a
.
Třetí příkaz používá tečku k získání hodnoty Status vlastnost objektu v $a
. Jak ukazuje výstup, hodnota je Hotovo.
$A = Get-ChildItem c:\ps-test\test.txt
$A | Add-Member -NotePropertyName Status -NotePropertyValue Done
$A.Status
Done
Příklad 2: Přidání vlastnosti aliasu do objektu PSObject
Následující příklad přidá Size alias vlastnost objektu, který představuje Test.txt
soubor. Nová vlastnost je alias pro vlastnost Length.
První příkaz používá rutinu Get-ChildItem
k získání objektu Test.txt
FileInfo.
Druhý příkaz přidá vlastnost aliasu Size. Třetí příkaz pomocí zápisu tečky získá hodnotu nové vlastnosti Size.
$A = Get-ChildItem C:\Temp\test.txt
$A | Add-Member -MemberType AliasProperty -Name Size -Value Length
$A.Size
2394
Příklad 3: Přidání vlastnosti StringUse note do řetězce
Tento příklad přidá vlastnost StringUse poznámky do řetězce.
Vzhledem k tomu, že Add-Member
nelze přidat typy řetězcové vstupní objekty, můžete zadat parametr PassThru pro vygenerování výstupního objektu. Poslední příkaz v příkladu zobrazí novou vlastnost.
Tento příklad používá NotePropertyMembers parametr. Hodnota parametru NotePropertyMembers je tabulka hash. Klíč je název vlastnosti poznámky, StringUsea hodnota je hodnota vlastnosti poznámky, Display.
$A = "A string"
$A = $A | Add-Member -NotePropertyMembers @{StringUse="Display"} -PassThru
$A.StringUse
Display
Příklad 4: Přidání metody skriptu do objektu FileInfo
Tento příklad přidá SizeInMB metoda skriptu do FileInfo objektu, který vypočítá velikost souboru na nejbližší MegaByte. Druhý příkaz vytvoří ScriptBlock, který používá statickou metodu Round z typu [math]
k zaokrouhlení velikosti souboru na druhé desetinné místo.
Parametr Value používá také automatickou proměnnou $This
, která představuje aktuální objekt. Proměnná $This
je platná pouze v blocích skriptu, které definují nové vlastnosti a metody.
Poslední příkaz používá zápis tečky k volání nové SizeInMB metoda skriptu objektu v proměnné $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
Příklad 5: Zkopírování všech vlastností objektu do jiného
Tato funkce zkopíruje všechny vlastnosti jednoho objektu do jiného objektu.
Smyčka foreach
používá rutinu Get-Member
k získání všech vlastností objektu From. Příkazy v rámci smyčky foreach
se provádějí v řadě pro každou z vlastností.
Příkaz Add-Member
přidá vlastnost objektu From do objektu To jako NoteProperty. Hodnota se zkopíruje pomocí parametru Value. Pomocí parametru Force přidá členy se stejným názvem člena.
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
}
}
Příklad 6: Vytvoření vlastního objektu
Tento příklad vytvoří Asset vlastní objekt.
Rutina $Asset
.
Druhý příkaz používá akcelerátor typu [ordered]
k vytvoření seřazeného slovníku názvů a hodnot. Příkaz uloží výsledek do proměnné $D
.
Třetí příkaz používá NotePropertyMembers parametr rutiny Add-Member
k přidání slovníku do proměnné $D
do PSObject.
Vlastnost TypeName přiřadí novému názvu asset, PSObject.
Poslední příkaz předá nový objekt Asset do rutiny Get-Member
. Výstup ukazuje, že objekt má název typu Asset a vlastnosti poznámky, které jsme definovali v seřazené slovníku.
$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
Parametry
-Force
Označuje, že tato rutina přidá nového člena, i když má objekt vlastního člena se stejným názvem. Parametr Force nelze použít k nahrazení standardního člena typu.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-InputObject
Určuje objekt, do kterého je přidán nový člen. Zadejte proměnnou, která obsahuje objekty, nebo zadejte příkaz nebo výraz, který objekty získá.
Typ: | PSObject |
Position: | Named |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-MemberType
Určuje typ člena, který chcete přidat. Tento parametr je povinný. Přijatelné hodnoty pro tento parametr jsou:
- PoznámkaProperty
- AliasProperty
- ScriptProperty
- CodeProperty
- SkriptMethod
- CodeMethod
Informace o těchto hodnotách najdete v tématu PSMemberTypes – výčet v knihovně MSDN.
Ne všechny objekty mají každý typ členu. Pokud zadáte typ člena, který objekt nemá, PowerShell vrátí chybu.
Typ: | PSMemberTypes |
Aliasy: | Type |
Přípustné hodnoty: | AliasProperty, CodeProperty, Property, NoteProperty, ScriptProperty, Properties, PropertySet, Method, CodeMethod, ScriptMethod, Methods, ParameterizedProperty, MemberSet, Event, Dynamic, All |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Name
Určuje název člena, kterého tato rutina přidá.
Typ: | String |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-NotePropertyMembers
Určuje tabulku hash nebo seřazený slovník názvů a hodnot vlastností poznámek. Zadejte tabulku hash nebo slovník, ve kterém jsou klíče názvy vlastností poznámek a hodnoty jsou hodnoty vlastností poznámek.
Další informace o tabulkách hash a seřazených slovníkech v PowerShellu najdete v tématu about_Hash_Tables.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | IDictionary |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-NotePropertyName
Určuje název vlastnosti poznámky.
Tento parametr použijte s parametrem NotePropertyValue. Tento parametr je volitelný.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | String |
Position: | 0 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-NotePropertyValue
Určuje hodnotu vlastnosti poznámky.
Tento parametr použijte s parametrem NotePropertyName. Tento parametr je volitelný.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | Object |
Position: | 1 |
Default value: | None |
Vyžadováno: | True |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-PassThru
Vrátí objekt představující položku, se kterou pracujete. Ve výchozím nastavení tato rutina negeneruje žádný výstup.
U většiny objektů Add-Member
přidá nové členy do vstupního objektu.
Pokud je vstupním objektem řetězec, Add-Member
nemůže přidat člena do vstupního objektu.
Pro tyto objekty vytvořte výstupní objekt pomocí parametru PassThru.
V prostředí Windows PowerShell 2.0 Add-Member
přidali členy pouze do objektu PSObject obálky objektů, nikoli objektu.
Pomocí parametru PassThru vytvořte výstupní objekt pro libovolný objekt, který má obálku PSObject.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-SecondValue
Určuje volitelné další informace o AliasProperty, ScriptProperty, CodePropertynebo CodeMethod členy.
Pokud se používá při přidávání AliasProperty, tento parametr musí být datový typ. Převod na zadaný datový typ se přidá k hodnotě AliasProperty.
Pokud například přidáte AliasProperty, který poskytuje alternativní název vlastnosti řetězce, můžete také zadat SecondValue parametr System.Int32 indikovat, že hodnota této řetězcové vlastnosti by měla být při přístupu převedena na celé číslo pomocí odpovídající AliasProperty.
Parametr SecondValue můžete použít k zadání dalšího ScriptBlock při přidání ScriptProperty členu. První ScriptBlock, zadaný v parametru Value, se používá k získání hodnoty proměnné. Druhý ScriptBlock, zadaný v parametru SecondValue, slouží k nastavení hodnoty proměnné.
Typ: | Object |
Position: | 3 |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-TypeName
Určuje název typu.
Pokud je typ třídou v System oboru názvů nebo typ, který má akcelerátor typů, můžete zadat krátký název typu. V opačném případě se vyžaduje úplný název typu. Tento parametr je efektivní pouze v případě, že InputObject je PSObject.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | String |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Value
Určuje počáteční hodnotu přidaného člena. Pokud přidáte AliasProperty, CodeProperty, ScriptProperty nebo CodeMethod člen, můžete zadat volitelné další informace pomocí parametru SecondValue.
Typ: | Object |
Position: | 2 |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
Vstupy
Do této rutiny můžete převést libovolný typ objektu.
Výstupy
None or System.Object
Pokud použijete parametr PassThru, vrátí tato rutina nově rozšířený objekt. Jinak tato rutina negeneruje žádný výstup.
Poznámky
Členy můžete přidat pouze do objektů PSObject. Chcete-li zjistit, zda je objekt PSObject objekt, použijte operátor -is
.
Pokud chcete například otestovat objekt uložený v proměnné $obj
, zadejte $obj -is [PSObject]
.
Názvy
Pokud zahrnete názvy parametrů, můžou se parametry zobrazit v libovolném pořadí.
Můžete použít $this
automatickou proměnnou v blocích skriptu, které definují hodnoty nových vlastností a metod.
Proměnná $this
odkazuje na instanci objektu, do kterého se přidávají vlastnosti a metody. Další informace o proměnné $this
naleznete v tématu about_Automatic_Variables.