Update-TypeData

Aggiorna i dati del tipo esteso della sessione.

Sintassi

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>]

Descrizione

Il Update-TypeData cmdlet aggiorna i dati dei tipi estesi nella sessione ricaricando i Types.ps1xml file in memoria e aggiungendo nuovi dati di tipo esteso.

Per impostazione predefinita, PowerShell carica i dati di tipo esteso in base alle esigenze. Senza parametri, Update-TypeData ricarica tutti i file caricati nella sessione, inclusi i Types.ps1xml file di tipo aggiunti. È possibile usare i parametri di per aggiungere nuovi file di Update-TypeData tipo e aggiungere e sostituire i dati dei tipi estesi.

Il Update-TypeData cmdlet può essere usato per precaricare tutti i dati di tipo. Questa funzionalità è particolarmente utile quando si sviluppano tipi e si vogliono caricare i nuovi tipi a scopo di test.

A partire da Windows PowerShell 3.0, è possibile usare per aggiungere e sostituire i dati dei tipi estesi nella sessione senza usare Update-TypeData un Types.ps1xml file. I dati di tipo vengono aggiunti in modo dinamico, ovvero, senza un file, vengono aggiunti solo alla sessione corrente. Per aggiungere i dati del tipo a tutte le sessioni, aggiungere un Update-TypeData comando al profilo di PowerShell. Per altre informazioni, vedere about_Profiles.

Inoltre, a partire da Windows PowerShell 3.0, è possibile usare il Get-TypeData cmdlet per ottenere i tipi estesi nella sessione corrente e il Remove-TypeData cmdlet per eliminare i tipi estesi dalla sessione corrente.

Le eccezioni che si verificano nelle proprietà o dall'aggiunta di proprietà a un Update-TypeData comando non segnalano errori. Ciò serve a sopprimere le eccezioni che si verificherebbero in molti dei tipi più comuni durante la formattazione e l'output. Se si ottengono proprietà .NET, è possibile aggirare l'eliminazione delle eccezioni usando invece la sintassi del metodo, come illustrato nell'esempio seguente:

"hello".get_Length()

Si noti che la sintassi del metodo può essere usata solo con le proprietà .NET. Le proprietà aggiunte eseguendo il cmdlet non possono usare la sintassi del Update-TypeData metodo.

Per altre informazioni sui Types.ps1xml file in PowerShell, vedere about_Types.ps1xml.

Esempio

Esempio 1: Aggiornare i tipi estesi

Update-TypeData

Questo comando aggiorna la configurazione del Types.ps1xml tipo esteso dai file già usati nella sessione.

Esempio 2: Aggiornare i tipi più volte

In questo esempio viene illustrato come aggiornare i tipi in un file di tipo più volte nella stessa sessione.

Il primo comando aggiorna prima la configurazione del Types.ps1xml tipo esteso dai file, elaborando i TypesA.types.ps1xml file e TypesB.types.ps1xml .

Il secondo comando mostra come aggiornare di TypesA.types.ps1xml nuovo, ad esempio se è stato aggiunto o modificato un tipo nel file. È possibile ripetere il comando precedente per il TypesA.types.ps1xml file oppure eseguire un Update-TypeData comando senza parametri, perché TypesA.types.ps1xml è già presente nell'elenco di file di tipo per la sessione corrente.

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

Esempio 3: Aggiungere una proprietà script agli oggetti DateTime

In questo esempio viene Update-TypeData utilizzata per aggiungere la proprietà script Quarter agli oggetti System.DateTime nella sessione corrente, ad esempio quelli restituiti dal Get-Date cmdlet .

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

Il Update-TypeData comando usa il parametro TypeName per specificare il tipo System.DateTime , il parametro MemberName per specificare un nome per la nuova proprietà, la proprietà MemberType per specificare il tipo ScriptProperty e il parametro Value per specificare lo script che determina il trimestre annuale.

Il valore della proprietà Value è uno script che calcola il trimestre annuale corrente. Il blocco di script usa la $this variabile automatica per rappresentare l'istanza corrente dell'oggetto e l'operatore In per determinare se il valore del mese viene visualizzato in ogni matrice integer. Per altre informazioni sull'operatore -in , vedere about_Comparison_Operators.

Il secondo comando recupera la nuova proprietà trimestre della data corrente.

Esempio 4: Aggiornare un tipo visualizzato negli elenchi per impostazione predefinita

In questo esempio viene illustrato come impostare le proprietà di un tipo visualizzato negli elenchi per impostazione predefinita, ovvero quando non vengono specificate proprietà. Poiché i dati di tipo non vengono specificati in un Types.ps1xml file, è effettivo solo nella sessione corrente.

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

Il primo comando usa il Update-TypeData cmdlet per impostare le proprietà di elenco predefinite per il tipo System.DateTime . Il comando usa il parametro TypeName per specificare il tipo e il parametro DefaultDisplayPropertySet per specificare le proprietà predefinite per un elenco. Le proprietà selezionate includono la nuova proprietà script Quarter aggiunta in un esempio precedente.

Il secondo comando usa il Get-Date cmdlet per ottenere un oggetto System.DateTime che rappresenta la data corrente. Il comando usa un operatore pipeline (|) per inviare l'oggetto DateTime al Format-List cmdlet . Poiché il Format-List comando non specifica le proprietà da visualizzare nell'elenco, PowerShell usa i valori predefiniti stabiliti dal Update-TypeData comando .

Esempio 5: Aggiornare i dati del tipo per un oggetto inviato tramite pipe

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 questo esempio viene illustrato che quando si invia tramite pipe un oggetto a Update-TypeData, Update-TypeData vengono aggiunti dati di tipo esteso per il tipo di oggetto.

Questa tecnica è più rapida rispetto all'uso del Get-Member cmdlet o del Get-Type metodo per ottenere il tipo di oggetto. Tuttavia, se si invia tramite pipe una raccolta di oggetti a Update-TypeData, aggiorna i dati di tipo del primo tipo di oggetto e quindi restituisce un errore per tutti gli altri oggetti dell'insieme perché il membro è già definito nel tipo.

Il primo comando usa il Get-Module cmdlet per ottenere il modulo PSScheduledJob. Il comando invia tramite pipe l'oggetto modulo al Update-TypeData cmdlet , che aggiorna i dati di tipo per il tipo System.Management.Automation.PSModuleInfo e i tipi derivati da esso, ad esempio il tipo ModuleInfoGrouping che Get-Module restituisce quando si utilizza il parametro ListAvailable nel comando.

I Update-TypeData comandi aggiungono la proprietà script SupportsUpdatableHelp a tutti i moduli importati. Il valore del parametro Value è uno script che restituisce $True se la proprietà HelpInfoUri del modulo viene popolata e $False in caso contrario.

Il secondo comando invia tramite pipe gli oggetti modulo dal Get-ModuleFormat-Table cmdlet , che visualizza le proprietà Name e SupportsUpdatableHelp di tutti i moduli in un elenco.

Parametri

-AppendPath

Specifica il percorso dei file facoltativi .ps1xml . I file specificati vengono caricati nell'ordine in cui sono elencati dopo il caricamento dei file incorporati. È anche possibile inviare tramite pipe un valore AppendPath a Update-TypeData.

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

-Confirm

Richiede conferma prima di eseguire il cmdlet.

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

-DefaultDisplayProperty

Specifica la proprietà del tipo visualizzato dal Format-Wide cmdlet quando non vengono specificate altre proprietà.

Digitare il nome di una proprietà standard o estesa del tipo. Il valore di questo parametro può essere il nome di un tipo che viene aggiunto nello stesso comando.

Questo valore è efficace solo quando non sono definite visualizzazioni wide per il tipo in un Format.ps1xml file.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-DefaultDisplayPropertySet

Specifica una o più proprietà del tipo. Queste proprietà vengono visualizzate dai Format-Listcmdlet , Format-Tablee Format-Custom quando non vengono specificate altre proprietà.

Digitare i nomi di proprietà standard o estese del tipo. Il valore di questo parametro possono essere i nomi dei tipi che vengono aggiunti nello stesso comando.

Questo valore è effettivo solo quando non sono presenti visualizzazioni elenco, tabella o personalizzata, rispettivamente, definite per il tipo in un Format.ps1xml file.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-DefaultKeyPropertySet

Specifica una o più proprietà del tipo. Queste proprietà vengono usate dai Group-Object cmdlet e Sort-Object quando non vengono specificate altre proprietà.

Digitare i nomi di proprietà standard o estese del tipo. Il valore di questo parametro possono essere i nomi dei tipi che vengono aggiunti nello stesso comando.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-Force

Indica che il cmdlet usa i dati di tipo specificati, anche se per tale tipo sono già stati specificati dati di tipo.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-InheritPropertySerializationSet

Indica se il set di proprietà serializzate viene ereditato. Il valore predefinito è $Null. I valori validi per questo parametro sono:

  • $True. Il set di proprietà viene ereditato.
  • $False. Il set di proprietà non viene ereditato.
  • $Null. L'ereditarietà non è definita.

Questo parametro è valido solo quando il valore del parametro SerializationMethod è SpecificProperties. Quando il valore di questo parametro è $False, è necessario il parametro PropertySerializationSet .

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-MemberName

Specifica il nome di una proprietà o metodo.

Utilizzare questo parametro con i parametri TypeName, MemberType, Value e SecondValue per aggiungere o modificare una proprietà o un metodo di un tipo.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-MemberType

Specifica il tipo del membro da aggiungere o modificare.

Utilizzare questo parametro con i parametri TypeName, MemberType, Value e SecondValue per aggiungere o modificare una proprietà o un metodo di un tipo. I valori validi per questo parametro sono:

  • AliasProperty
  • CodeMethod
  • Codeproperty
  • NotaProperty
  • ScriptMethod
  • ScriptProperty

Per informazioni su questi valori, vedere Enumerazione PSMemberTypes.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

Specifica il percorso dei file facoltativi .ps1xml . I file specificati vengono caricati nell'ordine in cui sono elencati prima del caricamento dei file incorporati.

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

-PropertySerializationSet

Specifica i nomi delle proprietà che vengono serializzate. Usare questo parametro quando il valore del parametro SerializationMethod è SpecificProperties.

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

-SecondValue

Specifica valori aggiuntivi per i membri AliasProperty, ScriptProperty, CodeProperty o CodeMethod.

Utilizzare questo parametro con i parametri TypeName, MemberType, Value e SecondValue per aggiungere o modificare una proprietà o un metodo di un tipo.

Quando il valore del parametro MemberType è AliasProperty, il valore del parametro SecondValue deve essere un tipo di dati. PowerShell converte ,ovvero esegue il cast, il valore della proprietà alias nel tipo specificato. Ad esempio, se si aggiunge una proprietà alias che fornisce un nome alternativo per una proprietà stringa, è anche possibile specificare un SecondValue di System.Int32 per convertire il valore stringa con alias in un numero intero.

Quando il valore del parametro MemberType è ScriptProperty, è possibile usare il parametro SecondValue per specificare un blocco di script aggiuntivo. Il blocco di script nel valore del parametro Value ottiene il valore di una variabile. Il blocco di script nel valore del parametro SecondValue imposta il valore della variabile.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-SerializationDepth

Specifica quanti livelli di oggetti di tipo verranno serializzati come stringhe. Il valore 1 predefinito serializza l'oggetto e le relative proprietà. Un valore di 0 serializza l'oggetto, ma non le relative proprietà. Un valore di serializza l'oggetto, le relative proprietà ed eventuali oggetti nei valori delle 2 proprietà.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-SerializationMethod

Specifica un metodo di serializzazione per il tipo. Un metodo di serializzazione determina quali proprietà del tipo vengono serializzate e la tecnica usata per serializzarle. I valori validi per questo parametro sono:

  • AllPublicProperties. Serializza tutte le proprietà pubbliche del tipo. È possibile utilizzare il parametro SerializationDepth per determinare se le proprietà figlio vengono serializzate.
  • String. Serializza il tipo come stringa. È possibile utilizzare StringSerializationSource per specificare una proprietà del tipo da utilizzare come risultato della serializzazione. In caso contrario, il tipo viene serializzato utilizzando il metodo ToString dell'oggetto .
  • SpecificProperties. Serializzare solo le proprietà specificate di questo tipo. Utilizzare il parametro PropertySerializationSet per specificare le proprietà del tipo serializzato. È anche possibile utilizzare il parametro InheritPropertySerializationSet per determinare se il set di proprietà è ereditato e il parametro SerializationDepth per determinare se le proprietà figlio vengono serializzate.

In PowerShell i metodi di serializzazione vengono archiviati in oggetti interni PSStandardMembers .

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-StringSerializationSource

Specifica il nome di una proprietà del tipo. Il valore della proprietà specificata viene usato come risultato della serializzazione. Questo parametro è valido solo quando il valore del parametro SerializationMethod è String.

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

-TargetTypeForDeserialization

Specifica il tipo cui vengono convertiti oggetti di questo tipo quando vengono deserializzati.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-TypeAdapter

Specifica il tipo di un adattatore di tipo, ad esempio Microsoft.PowerShell.Cim.CimInstanceAdapter. Un adattatore di tipo consente a PowerShell di ottenere i membri di un tipo.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-TypeConverter

Specifica un convertitore di tipi per convertire i valori tra tipi diversi. Se viene definito un convertitore di tipi per un tipo, per la conversione viene usata un'istanza del convertitore di tipi.

Immettere un valore System.Type derivato dalle classi System.ComponentModel.TypeConverter o System.Management.Automation.PSTypeConverter .

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-TypeData

Specifica una matrice di dati di tipo che questo cmdlet aggiunge alla sessione. Immettere una variabile contenente un oggetto TypeData o un comando che ottiene un oggetto TypeData , ad esempio un Get-TypeData comando. È anche possibile inviare tramite pipe un oggetto TypeData a Update-TypeData.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-TypeName

Specifica il nome del tipo da estendere.

Per i tipi nello spazio dei nomi System immettere il nome breve. In caso contrario, è necessario immettere il nome completo del tipo. I caratteri jolly non sono supportati.

È possibile inviare tramite pipe i nomi dei tipi a Update-TypeData. Quando si invia tramite pipe un oggetto a Update-TypeData, Update-TypeData ottiene il nome del tipo dell'oggetto e i dati di tipo al tipo di oggetto.

Utilizzare questo parametro con i parametri MemberName, MemberType, Value e SecondValue per aggiungere o modificare una proprietà o un metodo di un tipo.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-Value

Specifica il nome della proprietà o del metodo.

Se si aggiunge un AliasPropertymembro , CodeProperty, ScriptPropertyo CodeMethod , è possibile usare il parametro SecondValue per aggiungere informazioni aggiuntive.

Utilizzare questo parametro con i parametri MemberName, MemberType, Value e SecondValue per aggiungere o modificare una proprietà o un metodo di un tipo.

Questo parametro è stato introdotto in Windows PowerShell 3.0.

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

-WhatIf

Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.

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

Input

String

È possibile inviare tramite pipe una stringa contenente i valori dei parametri AppendPath, TypeName o TypeData a questo cmdlet.

Output

None

Questo cmdlet non restituisce output.