Estensione degli oggetti di outputExtending Output Objects

È possibile estendere gli oggetti .NET Framework restituiti da cmdlet, funzioni e script tramite i file di tipi (con estensione ps1xml).You can extend the .NET Framework objects that are returned by cmdlets, functions, and scripts by using types files (.ps1xml). I file di tipi sono file basati su XML che consentono di aggiungere proprietà e metodi agli oggetti esistenti.Types files are XML-based files that let you add properties and methods to existing objects. Windows PowerShell, ad esempio, fornisce il Types.ps1file XML, che aggiunge elementi a diversi oggetti di .NET Framework esistenti.For example, Windows PowerShell provides the Types.ps1xml file, which adds elements to several existing .NET Framework objects. Il file di Types.ps1XML si trova nella directory di installazione di Windows PowerShell ( $pshome ).The Types.ps1xml file is located in the Windows PowerShell installation directory ($pshome). È possibile creare un file di tipi personalizzato per estendere ulteriormente tali oggetti o per estendere altri oggetti.You can create your own types file to further extend those objects or to extend other objects. Quando si estende un oggetto utilizzando un file di tipi, qualsiasi istanza dell'oggetto viene estesa con i nuovi elementi.When you extend an object by using a types file, any instance of the object is extended with the new elements.

Estensione dell'oggetto System. ArrayExtending the System.Array Object

Nell'esempio seguente viene illustrato come Windows PowerShell estende l'oggetto System. Array nel file Types.ps1XML.The following example shows how Windows PowerShell extends the System.Array object in the Types.ps1xml file. Per impostazione predefinita, gli oggetti System. Array hanno una Length proprietà che elenca il numero di oggetti nella matrice.By default, System.Array objects have a Length property that lists the number of objects in the array. Tuttavia, poiché il nome "length" non descrive chiaramente la proprietà, Windows PowerShell aggiunge la Count proprietà alias, che visualizza lo stesso valore della Length Proprietà.However, because the name "length" does not clearly describe the property, Windows PowerShell adds the Count alias property, which displays the same value as the Length property. Il codice XML seguente aggiunge la Count proprietà al tipo System. Array .The following XML adds the Count property to the System.Array type.

<Type>
  <Name>System.Array</Name>
  <Members>
    <AliasProperty>
      <Name>Count</Name>
      <ReferencedMemberName>Length</ReferencedMemberName>
    </AliasProperty>
  </Members>
</Type>

Per visualizzare la nuova proprietà alias, usare un comando Get-Member in qualsiasi matrice, come illustrato nell'esempio seguente.To see this new alias property, use a Get-Member command on any array, as shown in the following example.

Get-Member -InputObject (1,2,3,4)

Il comando restituisce i risultati seguenti.The command returns the following results.

Name           MemberType    Definition
----           ----------    ----------
Count          AliasProperty Count = Length
Address        Method        System.Object& Address(Int32 )
Clone          Method        System.Object Clone()
CopyTo         Method        System.Void CopyTo(Array array, Int32 index):
Equals         Method        System.Boolean Equals(Object obj)
Get            Method        System.Object Get(Int32 )
...
Length         Property      System.Int32 Length {get;}

Count Length Per determinare il numero di oggetti in una matrice, è possibile usare la proprietà o la proprietà.You can use either the Count property or the Length property to determine how many objects are in an array. Ad esempio:For example:

PS> (1, 2, 3, 4).Count
4
PS> (1, 2, 3, 4).Length
4

File di tipi personalizzatiCustom Types Files

Per creare un file di tipi personalizzati, iniziare copiando un file di tipi esistente.To create a custom types file, start by copying an existing types file. Il nuovo file può avere un nome qualsiasi, ma deve avere un'estensione del nome file. ps1xml.The new file can have any name, but it must have a .ps1xml file name extension. Quando si copia il file, è possibile inserire il nuovo file in qualsiasi directory accessibile a Windows PowerShell, ma è utile inserire i file nella directory di installazione di Windows PowerShell ( $pshome ) o in una sottodirectory della directory di installazione.When you copy the file, you can place the new file in any directory that is accessible to Windows PowerShell, but it is useful to place the files in the Windows PowerShell installation directory ($pshome) or in a subdirectory of the installation directory.

Per aggiungere tipi estesi personalizzati al file, aggiungere un elemento types per ogni oggetto che si desidera estendere.To add your own extended types to the file, add a types element for each object that you want to extend. Negli argomenti seguenti vengono forniti esempi.The following topics provide examples.

Dopo aver definito i tipi estesi personalizzati, usare uno dei metodi seguenti per rendere disponibili gli oggetti estesi:After you define your own extended types, use one of the following methods to make your extended objects available:

  • Per rendere disponibile il file dei tipi estesi per la sessione corrente, usare il cmdlet Update-TypeData per aggiungere il nuovo file.To make your extended types file available to the current session, use the Update-TypeData cmdlet to add the new file. Se si vuole che i tipi abbiano la precedenza sui tipi definiti in altri file di tipi (incluso il file XML Types.ps1), usare il PrependData parametro del cmdlet Update-TypeData .If you want your types to take precedence over the types that are defined in other types files (including the Types.ps1xml file), use the PrependData parameter of the Update-TypeData cmdlet.
  • Per rendere il file di tipi estesi disponibile per tutte le sessioni future, aggiungere il file di tipi a un modulo, esportare la sessione corrente o aggiungere il comando Update-TypeData al profilo di Windows PowerShell.To make your extended types file available to all future sessions, add the types file to a module, export the current session, or add the Update-TypeData command to your Windows PowerShell profile.

Tipi di firma fileSigning Types Files

I tipi di file devono essere firmati digitalmente per evitare manomissioni perché il codice XML può includere blocchi di script.Types files should be digitally signed to prevent tampering because the XML can include script blocks. Per ulteriori informazioni sull'aggiunta di firme digitali, vedere about_SigningFor more information about adding digital signatures, see about_Signing

Vedere ancheSee Also

Definizione delle proprietà predefinite per gli oggettiDefining Default Properties for Objects

Definizione dei metodi predefiniti per gli oggettiDefining Default Methods for Objects

Definizione dei set di membri predefiniti per gli oggettiDefining Default Member Sets for Objects

Scrittura di un cmdlet di Windows PowerShellWriting a Windows PowerShell Cmdlet