Fügt der Instanz eines Windows PowerShell-Objekts ein benutzerdefiniertes Element hinzu. (Add-Member)
NAMEAdd-MemberÜBERSICHTFügt der Instanz eines Windows PowerShell-Objekts ein benutzerdefiniertes Element hinzu.SYNTAXAdd-Member [-MemberType] {AliasProperty | CodeProperty | Property | NoteProperty | ScriptProperty | Properties | PropertySet | Method | CodeMethod | ScriptMethod | Methods | ParameterizedProperty | MemberSet | Event | All} [-Name] <string> -InputObject <psobject> [[-Value] <Object>] [[-SecondValue] <Object>] [-Force] [-PassThru] [<CommonParameters>]BESCHREIBUNGMit dem Cmdlet "Add-Member" wird der Instanz eines Windows PowerShell-Objekts ein benutzerdefiniertes Element hinzugefügt. Die folgenden Elementtypen können hinzugefügt werden: AliasProperty, CodeProperty, NoteProperty, ScriptProperty, PropertySet, CodeMethod, MemberSet und ScriptMethod. Den Anfangswert des Elements legen Sie mit dem Value-Parameter fest. Für "AliasProperty", "ScriptProperty", "CodeProperty " und "CodeMethod" können Sie mit dem SecondValue-Parameter zusätzliche Informationen angeben. Die zusätzlichen Elemente werden der Instanz des Objekts hinzugefügt, die Sie über die Pipeline an Add-Member übergeben oder mit dem InputObject-Parameter angeben. Das zusätzliche Element ist nur solange verfügbar, wie diese Instanz vorhanden ist. Mit dem Cmdlet "Export-Clixml" können Sie die Instanz einschließlich der zusätzlichen Elemente in einer Datei speichern. Anhand der in dieser Datei gespeicherten Informationen kann die Instanz des Objekts mit dem Cmdlet "Import-Clixml" neu erstellt werden.PARAMETER-Force [<SwitchParameter>] Fügt ein neues Element hinzu, auch wenn ein Element mit demselben Namen bereits vorhanden ist. Kann nicht für Hauptelemente eines Typs verwendet werden. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -InputObject <psobject> Gibt das Objekt an, dem das neue Element hinzugefügt wird. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, mit dem die Objekte abgerufen werden. Erforderlich? true Position? named Standardwert Pipelineeingaben akzeptieren?true (ByValue) Platzhalterzeichen akzeptieren?false -MemberType <PSMemberTypes> Gibt den Typ des hinzuzufügenden Elements an. Dieser Parameter ist erforderlich. Die gültigen Werte für diesen Parameter lauten: - AliasProperty: Eine Eigenschaft, die einen neuen Namen für eine vorhandene Eigenschaft definiert. - CodeMethod: Eine Methode, die auf eine statische Methode einer Microsoft .NET Framework-Klasse verweist. - CodeProperty: Eine Eigenschaft, die auf eine statische Eigenschaft einer .NET Framework-Klasse verweist. - MemberSet: Eine vordefinierte Auflistung von Eigenschaften und Methoden, z. B. PSBase, PSObject und PSTypeNames. - Method: Eine Methode des zugrunde liegenden .NET Framework-Objekts. - NoteProperty: Eine Eigenschaft mit einem statischen Wert. - ParameterizedProperty: Eine Eigenschaft, die Parameter und Parameterwerte akzeptiert. - Property: Eine Eigenschaft des zugrunde liegenden .NET Framework-Objekts. - PropertySet: Eine vordefinierte Auflistung von Objekteigenschaften. - ScriptMethod: Eine Methode, deren Wert die Ausgabe eines Skripts ist. - ScriptProperty: Eine Eigenschaft, deren Wert die Ausgabe eines Skripts ist. - All: Ruft alle Elementtypen ab. - Methods: Ruft alle Typen von Methoden des Objekts ab (z. B. method, codemethod, scriptmethod). - Properties: Ruft alle Typen von Eigenschaften des Objekts ab (z. B. property, codeproperty, aliasproperty, scriptproperty). Nicht alle Objekte verfügen über jeden Elementtyp. Wenn Sie einen Elementtyp angeben, über den das Objekt nicht verfügt, gibt Windows PowerShell einen Fehler zurück. Der Elementtyp Event ist für Add-Member ungültig. Erforderlich? true Position? 1 Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?true -Name <string> Gibt den Namen des hinzuzufügenden Elements an. Wenn Sie den Parameternamen "Name" auslassen, muss der Wert des -Name-Parameters der zweite unbenannte Parameterwert im Befehl sein. Wenn Sie den Parameternamen angeben, können die Parameter in beliebiger Reihenfolge angegeben werden. Erforderlich? true Position? 2 Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -PassThru [<SwitchParameter>] Übergibt das neu erweiterte Objekt an die Pipeline. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -SecondValue <Object> Gibt optionale zusätzliche Informationen über Elemente von "AliasProperty", "ScriptProperty", "CodeProperty " oder "CodeMethod" an. Dieser Parameter muss ein Datentyp sein, wenn er beim Hinzufügen einer "AliasProperty" verwendet wird. Dem Wert der "AliasProperty" wird eine Konvertierung (Umwandlung) in den angegebenen Datentyp hinzugefügt. Wenn Sie z. B. eine "AliasProperty" hinzufügen, die einen alternativen Namen für eine Zeichenfolgeneigenschaft bereitstellt, können Sie auch einen SecondValue-Parameter mit dem Typ "System.Int32" festlegen, um anzugeben, dass der Wert der Zeichenfolgeneigenschaft beim Zugriff über die entsprechende "AliasProperty" in eine ganze Zahl konvertiert werden soll. Mit dem SecondValue-Parameter können Sie einen zusätzlichen "ScriptBlock" angeben, wenn Sie ein ScriptProperty-Element hinzufügen. In diesem Fall wird der erste im Value-Parameter angegebene ScriptBlock verwendet, um den Wert einer Variablen abzurufen. Der zweite ScriptBlock, der im SecondValue-Parameter angegeben ist, wird verwendet, um den Wert einer Variablen festzulegen. Erforderlich? false Position? 4 Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -Value <Object> Gibt den Anfangswert des hinzugefügten Elements an. Wenn Sie ein Element von "AliasProperty", "CodeProperty " oder "CodeMethod" hinzufügen, können Sie mit dem SecondValue-Parameter optionale zusätzliche Informationen angeben. Erforderlich? false Position? 3 Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false <CommonParameters> Dieses Cmdlet unterstützt folgende allgemeine Parameter: "Verbose", "Debug", "ErrorAction", "ErrorVariable", "WarningAction", "WarningVariable", "OutBuffer" und "OutVariable". Weitere Informationen erhalten Sie mit dem Befehl "get-help about_commonparameters".EINGABENSystem.Management.Automation.PSObject Sie können beliebige Objekttypen über die Pipeline an Add-Member übergeben.AUSGABENKeiner oder System.Object Wenn Sie den PassThru-Parameter verwenden, wird von Add-Member das neu erweiterte Objekt zurückgegeben. Andernfalls wird von diesem Cmdlet keine Ausgabe generiert.HINWEISENur "PSObject"-Objekten können Elemente hinzugefügt werden. Um zu bestimmen, ob ein Objekt ein PSObject-Objekt ist, verwenden Sie den Operator "is". Um z. B. ein in der Variablen "$obj" gespeichertes Objekt zu testen, geben Sie "$obj -is [PSObject]" ein. Die Namen der Parameter "MemberType", "Name", "Value" und "SecondValue" sind optional. Wenn Sie die Parameternamen weglassen, müssen die unbenannten Parameterwerte folgende Reihenfolge aufweisen: "MemberType", "Name", "Value", "SecondValue". Wenn Sie die Parameternamen angeben, können die Parameter in beliebiger Reihenfolge angegeben werden.Beispiele
BEISPIEL 1C:\PS>$a = (get-childitem)[0] C:\PS> $a | add-member -membertype noteproperty -name Status -value done C:\PS> $a | get-member -type noteproperty TypeName: System.IO.DirectoryInfo Name MemberType Definition ---- ---------- ---------- PSChildName NoteProperty System.String PSChildName=Co PSDrive NoteProperty System.Management.Automation PSIsContainer NoteProperty System.Boolean PSIsContainer PSParentPath NoteProperty System.String PSParentPath=M PSPath NoteProperty System.String PSPath=Microso PSProvider NoteProperty System.Management.Automation Status NoteProperty System.String Status=done Beschreibung ----------- Mit diesen Befehlen wird einem von Get-ChildItem zurückgegebenen DirectoryInfo-Objekt eine Status-Notizeigenschaft hinzugefügt und der Wert "done" zugewiesen. Mit dem ersten Befehl wird das erste Objekt abgerufen, das Get-Childitem zurückgibt (Index 0). Mit dem zweiten Befehl wird die Notizeigenschaft hinzugefügt. Mit dem dritten Befehl wird das aktualisierte Objekt mit einem Pipelineoperator (|) an das Cmdlet "Get-Member" gesendet. Aus der Ausgabe ist ersichtlich, dass die Eigenschaft hinzugefügt wurde.BEISPIEL 2C:\PS>$a = (get-childitem)[0] C:\PS> $a | add-member -membertype aliasproperty -name FileLength -value Length C:\PS> $a.filelength Beschreibung ----------- Mit diesen Befehlen wird die FileLength Aliaseigenschaft einem von Get-ChildItem zurückgegebenen DirectoryInfo-Objekt hinzugefügt. Die neue Eigenschaft ist ein Alias für die Length-Eigenschaft. Mit dem ersten Befehl wird das erste Objekt abgerufen, das Get-Childitem zurückgibt (Index 0). Mit dem zweiten Befehl wird die Aliaseigenschaft hinzugefügt. Mit dem dritten Befehl wird der Wert der neuen FileLength-Eigenschaft zurückgegeben.BEISPIEL 3C:\PS>$a = "a string" C:\PS> $a = $a | add-member -membertype noteproperty -name StringUse -value Display -passthru C:\PS> $a.StringUse Beschreibung ----------- Mit diesen Befehlen wird die StringUse-Eigenschaft einer Zeichenfolge hinzugefügt. Da die Zeichenfolge kein PSObject-Objekt ist, müssen Sie den PassThru-Parameter in den Befehl einschließen, um die erweiterte Zeichenfolge in der Variablen zu speichern. Mit dem letzten Befehl im Beispiel wird die neue Eigenschaft angezeigt.BEISPIEL 4C:\PS>$a = "this is a string" C:\PS> $a = add-member -inputobject $a -membertype scriptmethod -name words ` -value {$this.split()} -passthru C:\PS> $a.words() Beschreibung ----------- Mit diesen Befehlen wird einem Zeichenfolgenobjekt eine Skriptmethode hinzugefügt. Die Skriptmethode macht die Split()-Methode der System.String-Klasse der .NET Framework-Klassenbibliothek verfügbar, um die einzelnen Wörter in einer Zeichenfolge durch den Aufruf der Methode mit dem Namen "Words" für das Zeichenfolgenobjekt bequem zurückgeben zu können. Beachten Sie, dass der PassThru-Parameter angegeben wurde, um die Rückgabe des erweiterten Zeichenfolgenobjekts durch "Add-Member" als Ausgabe zu erzwingen, die in der Variablen "$a" gespeichert wird.BEISPIEL 5C:\PS>$event = get-eventlog -logname system -newest 1 C:\PS> $event.TimeWritten | get-member C:\PS> add-member -inputobject $event -membertype aliasproperty -name When ` -value TimeWritten -secondvalue System.String C:\PS> $event.When | get-member Beschreibung ----------- Mit diesen Befehlen wird einem vom Cmdlet "Get-EventLog" zurückgegebenen EventLogEntry-Objekt eine AliasProperty hinzugefügt. Der Name der AliasProperty lautet "When" und ist ein Alias für die TimeWritten-Eigenschaft des Objekts. Mit dem SecondValue-Parameter wird angegeben, dass der Eigenschaftenwert in den Typ "System.String" konvertiert werden soll, wenn mit der AliasProperty auf ihn zugegriffen wird. Die TimeWritten-Eigenschaft ist ein DateTime-Objekt. Im ersten Befehl wird das letzte Ereignis aus dem Systemereignisprotokoll mit dem Cmdlet "Get-EventLog" abgerufen und in der Variablen "$event" gespeichert. Der zweite Befehl greift auf die TimeWritten-Eigenschaft dieses Ereignisses zu und übergibt es über die Pipeline an das Cmdlet "Get-Member", um zu veranschaulichen, dass es sich bei der Eigenschaft um einen DateTime-Typ handelt. Anschließend wird Add-Member verwendet, um der Instanz des in der Variablen "$event" gespeicherten EventLogEntry-Objekts ein AliasProperty-Element hinzuzufügen. Mit dem Name-Parameter wird der Name das neuen Elements auf "When" festgelegt, und mit dem Value-Parameter wird angegeben, dass der Name ein Alias für die TimeWritten-Eigenschaft ist. Mit dem SecondValue-Parameter wird angegeben, dass der bei Verwendung dieses neuen Elements zurückgegebene Wert vom ursprünglichen Typ "System.DateTime" in den Typ "System.String" umgewandelt werden soll. Der dritte Befehl greift auf das neue Element zu und übergibt es über die Pipeline an das Cmdlet "Get-Member", um zu bestätigen, dass es vom Typ "System.String" ist.BEISPIEL 6C:\PS>function Copy-Property ($From, $To) { foreach ($p in Get-Member -InputObject $From -MemberType Property) { Add-Member -InputObject $To -MemberType NoteProperty -Name $p.Name -Value $From.$($p.Name) -Force $To.$($p.Name) = $From.$($p.Name) } } Beschreibung ----------- Diese Funktion kopiert alle Eigenschaften eines Objekts in ein anderes Objekt. Im ersten Befehl der Funktion wird der Funktionsname deklariert, und ihre Parameter werden aufgeführt. In der Foreach-Schleife werden die einzelnen Eigenschaften des From-Objekts mit dem Cmdlet "Get-Member" abgerufen. Die Befehle in der Foreach-Schleife werden der Reihe nach für jede der Eigenschaften ausgeführt. Mit dem Befehl "Add-Member" wird dem To-Objekt die Eigenschaft des From-Objekts als NoteProperty hinzugefügt. Durch Verwendung des Force-Parameters können mit dem Befehl Elemente hinzugefügt werden, die den gleichen Elementnamen aufweisen. Im letzten Befehl der Funktion wird der neuen Eigenschaft der Name der ursprünglichen Eigenschaft zugewiesen. VERWANDTE LINKS Online version: http://go.microsoft.com/fwlink/?LinkID=113280 (möglicherweise auf Englisch) Get-Member Export-Clixml Import-Clixml C:\Windows>powershell get-help Add-Type -full
Microsoft Windows [Version 10.0.19045.3693]
Copyright (c) 2023 Microsoft Corporation.
ColorConsole [Version 3.7.1000] PowerShell 2.0-Export