Share via


Update-TypeData

Aktualisiert die erweiterten Typdaten in der Sitzung.

Syntax

Update-TypeData
      [[-AppendPath] <String[]>]
      [-PrependPath <String[]>]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Update-TypeData
      [-MemberType <PSMemberTypes>]
      [-MemberName <String>]
      [-Value <Object>]
      [-SecondValue <Object>]
      [-TypeConverter <Type>]
      [-TypeAdapter <Type>]
      [-SerializationMethod <String>]
      [-TargetTypeForDeserialization <Type>]
      [-SerializationDepth <Int32>]
      [-DefaultDisplayProperty <String>]
      [-InheritPropertySerializationSet <Nullable`1>]
      [-StringSerializationSource <String>]
      [-DefaultDisplayPropertySet <String[]>]
      [-DefaultKeyPropertySet <String[]>]
      [-PropertySerializationSet <String[]>]
      -TypeName <String>
      [-Force]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]
Update-TypeData
      [-Force]
      [-TypeData] <TypeData[]>
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Beschreibung

Das Update-TypeData Cmdlet aktualisiert die Daten des erweiterten Typs in der Sitzung, indem die Dateien in den Types.ps1xml Arbeitsspeicher neu geladen und neue Daten des erweiterten Typs hinzugefügt werden.

Standardmäßig lädt PowerShell Daten vom erweiterten Typ nach Bedarf. Ohne Parameter werden alle Dateien, Update-TypeData die in der Types.ps1xml Sitzung geladen wurden, neu geladen, einschließlich aller Typdateien, die Sie hinzugefügt haben. Sie können die Parameter von Update-TypeData verwenden, um neue Typdateien hinzuzufügen und Daten vom erweiterten Typ hinzuzufügen und zu ersetzen.

Das Update-TypeData Cmdlet kann verwendet werden, um alle Typdaten vorab zu laden. Diese Funktion ist besonders nützlich, wenn Sie Typen entwickeln und diese neuen Typen zu Testzwecken laden möchten.

Ab Windows PowerShell 3.0 können Update-TypeData Sie verwenden, um Erweiterte Typdaten in der Sitzung hinzuzufügen und zu ersetzen, ohne eine Types.ps1xml Datei zu verwenden. Typdaten die dynamisch, d. h. ohne Datei, hinzugefügt werden, werden nur zur aktuellen Sitzung hinzugefügt. Um die Typdaten zu allen Sitzungen hinzuzufügen, fügen Sie Ihrem PowerShell-Profil einen Befehl hinzu Update-TypeData . Weitere Informationen finden Sie unter about_Profiles.

Außerdem können Sie ab Windows PowerShell 3.0 das Get-TypeData Cmdlet verwenden, um die erweiterten Typen in der aktuellen Sitzung abzurufen, und das Remove-TypeData Cmdlet, um erweiterte Typen aus der aktuellen Sitzung zu löschen.

Ausnahmen, die in Eigenschaften oder beim Hinzufügen von Eigenschaften zu einem Update-TypeData Befehl auftreten, melden keine Fehler. Dadurch werden Ausnahmen unterdrückt, die während der Formatierung und Ausgabe in vielen gängigen Typen auftreten würden. Wenn Sie .NET-Eigenschaften erhalten, können Sie die Unterdrückung von Ausnahmen umgehen, indem Sie stattdessen die Methodensyntax verwenden, wie im folgenden Beispiel gezeigt:

"hello".get_Length()

Beachten Sie, dass die Methodensyntax nur mit .NET-Eigenschaften verwendet werden kann. Eigenschaften, die durch Ausführen des Cmdlets Update-TypeData hinzugefügt werden, können keine Methodensyntax verwenden.

Weitere Informationen zu den Types.ps1xml Dateien in PowerShell finden Sie unter about_Types.ps1xml.

Beispiele

Beispiel 1: Aktualisieren erweiterter Typen

Update-TypeData

Mit diesem Befehl wird die Konfiguration des erweiterten Typs aus den Types.ps1xml Dateien aktualisiert, die bereits in der Sitzung verwendet wurden.

Beispiel 2: Mehrfaches Aktualisieren von Typen

In diesem Beispiel wird gezeigt, wie Die Typen in einer Typdatei mehrmals in derselben Sitzung aktualisiert werden.

Mit dem ersten Befehl wird die Konfiguration des erweiterten Typs aus den Types.ps1xml Dateien aktualisiert, wobei zuerst die TypesA.types.ps1xml Dateien und TypesB.types.ps1xml verarbeitet werden.

Der zweite Befehl zeigt, wie Sie den TypesA.types.ps1xml erneut aktualisieren, z. B. wenn Sie einen Typ in der Datei hinzugefügt oder geändert haben. Sie können entweder den vorherigen Befehl für die TypesA.types.ps1xml Datei wiederholen oder einen Update-TypeData Befehl ohne Parameter ausführen, da TypesA.types.ps1xml sich bereits in der Typdateiliste für die aktuelle Sitzung befindet.

Update-TypeData -PrependPath TypesA.types.ps1xml, TypesB.types.ps1xml
Update-TypeData -PrependPath TypesA.types.ps1xml

Beispiel 3: Hinzufügen einer Skripteigenschaft zu DateTime-Objekten

In diesem Beispiel wird Update-TypeData die Eigenschaft Quarter-Skript zu System.DateTime-Objekten in der aktuellen Sitzung hinzugefügt, z. B. den Get-Date vom Cmdlet zurückgegebenen Objekten.

Update-TypeData -TypeName "System.DateTime" -MemberType ScriptProperty -MemberName "Quarter" -Value {
  if ($this.Month -in @(1,2,3)) {"Q1"}
  elseif ($this.Month -in @(4,5,6)) {"Q2"}
  elseif ($this.Month -in @(7,8,9)) {"Q3"}
  else {"Q4"}
}
(Get-Date).Quarter

Q1

Der Update-TypeData Befehl verwendet den TypeName-Parameter , um den System.DateTime-Typ anzugeben, den MemberName-Parameter zum Angeben eines Namens für die neue Eigenschaft, die MemberType-Eigenschaft zum Angeben des ScriptProperty-Typs und den Value-Parameter , um das Skript anzugeben, das das Jahresquartal bestimmt.

Der Wert der Value-Eigenschaft ist ein Skript, das das aktuelle Quartal berechnet. Der Skriptblock verwendet die $this automatische Variable, um die aktuelle instance des Objekts darzustellen, und den In-Operator, um zu bestimmen, ob der Monatswert in jedem ganzzahligen Array angezeigt wird. Weitere Informationen zum -in Operator finden Sie unter about_Comparison_Operators.

Der zweite Befehl ruft die neue Quarter-Eigenschaft des aktuellen Datums ab.

Beispiel 4: Aktualisieren eines Typs, der standardmäßig in Listen angezeigt wird

In diesem Beispiel wird gezeigt, wie die Eigenschaften eines Typs festgelegt werden, der standardmäßig in Listen angezeigt wird, d. h. wenn keine Eigenschaften angegeben werden. Da die Typdaten nicht in einer Types.ps1xml Datei angegeben werden, sind sie nur in der aktuellen Sitzung wirksam.

Update-TypeData -TypeName "System.DateTime" -DefaultDisplayPropertySet "DateTime, DayOfYear, Quarter"
Get-Date | Format-List

Thursday, March 15, 2012 12:00:00 AM
DayOfYear : 75
Quarter   : Q1

Der erste Befehl verwendet das Update-TypeData Cmdlet, um die Standardlisteneigenschaften für den System.DateTime-Typ festzulegen. Der Befehl verwendet den TypeName-Parameter, um den Typ anzugeben, und den DefaultDisplayPropertySet-Parameter, um die Standardeigenschaften für eine Liste anzugeben. Zu den ausgewählten Eigenschaften gehört die neue Quarter-Skripteigenschaft, die in einem vorherigen Beispiel hinzugefügt wurde.

Der zweite Befehl verwendet das Get-Date Cmdlet, um ein System.DateTime-Objekt abzurufen, das das aktuelle Datum darstellt. Der Befehl verwendet einen Pipelineoperator (|), um das DateTime-Objekt an das Format-List Cmdlet zu senden. Da der Format-List Befehl nicht die Eigenschaften angibt, die in der Liste angezeigt werden sollen, verwendet PowerShell die Standardwerte, die durch den Update-TypeData Befehl festgelegt wurden.

Beispiel 5: Aktualisieren von Typdaten für ein Pipeobjekt

Get-Module | Update-TypeData -MemberType ScriptProperty -MemberName "SupportsUpdatableHelp" -Value {
  if ($this.HelpInfoUri) {$True} else {$False}
}
Get-Module -ListAvailable | Format-Table Name, SupportsUpdatableHelp

Name                             SupportsUpdatableHelp
----                             ---------------------
Microsoft.PowerShell.Diagnostics                  True
Microsoft.PowerShell.Host                         True
Microsoft.PowerShell.Management                   True
Microsoft.PowerShell.Security                     True
Microsoft.PowerShell.Utility                      True
Microsoft.WSMan.Management                        True
PSDiagnostics                                    False
PSScheduledJob                                    True
PSWorkflow                                        True
ServerManager                                     True
TroubleshootingPack                              False

In diesem Beispiel wird veranschaulicht, dass beim Übergeben eines Objekts an Update-TypeDataden Update-TypeData Objekttyp erweiterte Typdaten hinzugefügt werden.

Diese Technik ist schneller als die Verwendung des Get-Member Cmdlets oder der Get-Type -Methode zum Abrufen des Objekttyps. Wenn Sie jedoch eine Auflistung von -Objekten an Update-TypeDatapipen, aktualisiert sie die Typdaten des ersten Objekttyps und gibt dann einen Fehler für alle anderen Objekte in der Auflistung zurück, da der Member bereits für den Typ definiert ist.

Der erste Befehl verwendet das Get-Module Cmdlet, um das PSScheduledJob-Modul abzurufen. Der Befehl leitet das Modulobjekt an das Update-TypeData Cmdlet weiter, das die Typdaten für den Typ System.Management.Automation.PSModuleInfo und die daraus abgeleiteten Typen aktualisiert, z. B. den ModulInfoGrouping-Typ, der zurückgibt, Get-Module wenn Sie den ListAvailable-Parameter im Befehl verwenden.

Die Update-TypeData Befehle fügen allen importierten Modulen die Skripteigenschaft SupportsUpdatableHelp hinzu. Der Wert des Value-Parameters ist ein Skript, das zurückgibt $True , wenn die HelpInfoUri-Eigenschaft des Moduls aufgefüllt ist und $False andernfalls.

Mit dem zweiten Befehl werden die Modulobjekte an Get-Module das Format-Table Cmdlet weitergeleitet, das die Eigenschaften Name und SupportsUpdatableHelp aller Module in einer Liste anzeigt.

Parameter

-AppendPath

Gibt den Pfad zu optionalen .ps1xml Dateien an. Die angegebenen Dateien werden in der Reihenfolge geladen, in der sie nach dem Laden der integrierten Dateien aufgelistet sind. Sie können auch einen AppendPath-Wert an übergeben Update-TypeData.

Type:String[]
Aliases:PSPath, Path
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultDisplayProperty

Gibt die Eigenschaft des Typs an, die Format-Wide vom Cmdlet angezeigt wird, wenn keine anderen Eigenschaften angegeben werden.

Geben Sie den Namen einer Standardeigenschaft oder erweiterten Eigenschaft des Typs ein. Der Wert dieses Parameters kann der Name eines Typs sein, der im selben Befehl hinzugefügt wird.

Dieser Wert ist nur dann wirksam, wenn keine breit angelegten Ansichten für den Typ in einer Format.ps1xml Datei definiert sind.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultDisplayPropertySet

Gibt eine oder mehrere Eigenschaften des Typs an. Diese Eigenschaften werden von den Format-ListCmdlets , Format-Tableund Format-Custom angezeigt, wenn keine anderen Eigenschaften angegeben werden.

Geben Sie die Namen der Standardeigenschaften oder erweiterten Eigenschaften des Typs ein. Der Wert dieses Parameters kann der Name von Typen sein, die im selben Befehl hinzugefügt werden.

Dieser Wert ist nur wirksam, wenn keine Listen-, Tabellen- oder benutzerdefinierten Ansichten für den Typ in einer Format.ps1xml Datei definiert sind.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultKeyPropertySet

Gibt eine oder mehrere Eigenschaften des Typs an. Diese Eigenschaften werden von den Group-Object Cmdlets und Sort-Object verwendet, wenn keine anderen Eigenschaften angegeben werden.

Geben Sie die Namen der Standardeigenschaften oder erweiterten Eigenschaften des Typs ein. Der Wert dieses Parameters kann der Name von Typen sein, die im selben Befehl hinzugefügt werden.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

Gibt an, dass das Cmdlet die angegebenen Typdaten verwendet, auch wenn für diesen Typ bereits Typdaten angegeben wurden.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InheritPropertySerializationSet

Gibt an, ob der Satz von Eigenschaften, die serialisiert werden, geerbt wird. Standardwert: $Null. Zulässige Werte für diesen Parameter:

  • $True. Der Eigenschaftensatz wird geerbt.
  • $False. Der Eigenschaftensatz wird nicht geerbt.
  • $Null. Die Vererbung ist nicht definiert.

Dieser Parameter ist nur gültig, wenn der Wert des Parameters SerializationMethod ist SpecificProperties. Wenn der Wert dieses Parameters ist, ist $Falseder Parameter PropertySerializationSet erforderlich.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:Nullable<T>[Boolean]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MemberName

Gibt den Namen einer Eigenschaft oder Methode an.

Verwenden Sie diesen Parameter mit den Parametern TypeName, MemberType, Value und SecondValue, um eine Eigenschaft oder Methode eines Typs hinzuzufügen oder zu ändern.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MemberType

Gibt den Typ des Members an, der hinzugefügt oder geändert werden soll.

Verwenden Sie diesen Parameter mit den Parametern TypeName, MemberType, Value und SecondValue, um eine Eigenschaft oder Methode eines Typs hinzuzufügen oder zu ändern. Zulässige Werte für diesen Parameter:

  • AliasProperty
  • CodeMethod
  • CodeProperty
  • HinweisEigenschaften
  • ScriptMethod
  • ScriptProperty

Informationen zu diesen Werten finden Sie unter PSMemberTypes-Enumeration.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:PSMemberTypes
Accepted values:NoteProperty, AliasProperty, ScriptProperty, CodeProperty, ScriptMethod, CodeMethod
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PrependPath

Gibt den Pfad zu den optionalen .ps1xml Dateien an. Die angegebenen Dateien werden in der Reihenfolge geladen, in der sie vor dem Laden der integrierten Dateien aufgelistet sind.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PropertySerializationSet

Gibt die Namen der Eigenschaften an, die serialisiert werden. Verwenden Sie diesen Parameter, wenn der Wert des SerializationMethod-Parameters SpecificProperties ist.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SecondValue

Gibt zusätzliche Werte für die Member AliasProperty, ScriptProperty, CodeProperty oder CodeMethod an.

Verwenden Sie diesen Parameter mit den Parametern TypeName, MemberType, Value und SecondValue , um eine Eigenschaft oder Methode eines Typs hinzuzufügen oder zu ändern.

Wenn der Wert des MemberType-Parameters ist AliasProperty, muss der Wert des SecondValue-Parameters ein Datentyp sein. PowerShell konvertiert den Wert der Aliaseigenschaft in den angegebenen Typ . Wenn Sie beispielsweise eine Aliaseigenschaft hinzufügen, die einen alternativen Namen für eine Zeichenfolgeneigenschaft bereitstellt, können Sie auch einen SecondValue von System.Int32 angeben, um den aliasierten Zeichenfolgenwert in eine ganze Zahl zu konvertieren.

Wenn der Wert des MemberType-Parameters ist ScriptProperty, können Sie den SecondValue-Parameter verwenden, um einen zusätzlichen Skriptblock anzugeben. Der Skriptblock im Wert des Value-Parameters ruft den Wert einer Variablen ab. Der Skriptblock im Wert des SecondValue-Parameters legt den Wert der Variablen fest.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SerializationDepth

Gibt an, wie viele Ebenen von Objekten des Typs als Zeichenfolgen serialisiert werden. Der Standardwert 1 serialisiert das Objekt und seine Eigenschaften. Ein Wert von 0 serialisiert das -Objekt, aber nicht seine Eigenschaften. Ein Wert von 2 serialisiert das Objekt, seine Eigenschaften und alle Objekte in Eigenschaftswerten.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:Int32
Position:Named
Default value:1
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SerializationMethod

Gibt eine Serialisierungsmethode für den Typ an. Eine Serialisierungsmethode bestimmt, welche Eigenschaften des Typs serialisiert werden und mit welchem Verfahren sie serialisiert werden. Zulässige Werte für diesen Parameter:

  • AllPublicProperties. Serialisieren alle öffentlichen Eigenschaften des Typs. Sie können den SerializationDepth-Parameter verwenden, um zu bestimmen, ob die untergeordneten Eigenschaften serialisiert werden sollen.
  • String. Serialisieren den Typ als eine Zeichenfolge. Sie können StringSerializationSource verwenden, um eine Eigenschaft des Typs anzugeben, die als das Ergebnis der Serialisierung verwendet werden soll. Andernfalls wird der Typ mit der ToString-Methode des Objekts serialisiert.
  • SpecificProperties. Serialisieren Sie nur die angegebenen Eigenschaften dieses Typs. Verwenden Sie den PropertySerializationSet-Parameter, um die Eigenschaften des Typs anzugeben, die serialisiert werden sollen. Sie können auch den InheritPropertySerializationSet-Parameter verwenden, um zu bestimmen, ob der Eigenschaftensatz geerbt werden soll, sowie den SerializationDepth-Parameter, um zu bestimmen, ob die untergeordneten Eigenschaften serialisiert werden sollen.

In PowerShell werden Serialisierungsmethoden in internen PSStandardMembers-Objekten gespeichert.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StringSerializationSource

Gibt den Namen einer Eigenschaft des Typs an. Der Wert der angegebenen Eigenschaft wird als das Ergebnis der Serialisierung verwendet. Dieser Parameter ist nur gültig, wenn der Wert des Parameters SerializationMethod String ist.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TargetTypeForDeserialization

Gibt den Typ an, in den Objekte dieses Typs konvertiert werden, wenn sie deserialisiert werden.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:Type
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TypeAdapter

Gibt den Typ eines Typadapters an, z . B. Microsoft.PowerShell.Cim.CimInstanceAdapter. Mit einem Typadapter kann PowerShell die Member eines Typs abrufen.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:Type
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TypeConverter

Gibt einen Typkonverter zum Konvertieren von Werten zwischen verschiedenen Typen an. Wenn ein Typkonverter für einen Typ definiert ist, wird eine Instanz des Typkonverters für die Konvertierung verwendet.

Geben Sie einen System.Type-Wert ein, der von den System.ComponentModel.TypeConverter- oder System.Management.Automation.PSTypeConverter-Klassen abgeleitet ist.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:Type
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TypeData

Gibt ein Array von Daten vom Typ an, das dieses Cmdlet der Sitzung hinzufügt. Geben Sie eine Variable ein, die ein TypeData-Objekt oder einen Befehl enthält, der ein TypeData-Objekt abruft, z. B. einen Get-TypeData Befehl. Sie können auch ein TypeData-Objekt an übergeben Update-TypeData.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:TypeData[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-TypeName

Gibt den Namen des zu erweiternden Typs an.

Geben Sie für Typen im System-Namespace den Kurznamen ein. Für andere Typen ist der vollständige Typname erforderlich. Platzhalter werden nicht unterstützt.

Sie können Typnamen an übergeben Update-TypeData. Wenn Sie ein Objekt an Update-TypeDataübergeben, Update-TypeData ruft den Typnamen des Objekts und die Typdaten an den Objekttyp ab.

Verwenden Sie diesen Parameter mit den Parametern MemberName, MemberType, Value und SecondValue , um eine Eigenschaft oder Methode eines Typs hinzuzufügen oder zu ändern.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:String
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Value

Gibt den Wert der Eigenschaft oder Methode an.

Wenn Sie ein AliasProperty- , CodeProperty- ScriptPropertyoder CodeMethod -Element hinzufügen, können Sie den Parameter SecondValue verwenden, um zusätzliche Informationen hinzuzufügen.

Verwenden Sie diesen Parameter mit den Parametern MemberName, MemberType, Value und SecondValue , um eine Eigenschaft oder Methode eines Typs hinzuzufügen oder zu ändern.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Eingaben

String

Sie können eine Zeichenfolge, die die Werte der Parameter AppendPath, TypeName oder TypeData enthält, an übergeben Update-TypeData.

Ausgaben

None

Dieses Cmdlet gibt keine Ausgabe zurück.