Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile estendere gli oggetti .NET Framework restituiti da cmdlet, funzioni e script usando file di tipi (.ps1xml). I file di tipi sono file basati su XML che consentono di aggiungere proprietà e metodi agli oggetti esistenti. Ad esempio, Windows PowerShell fornisce il file Types.ps1xml, che aggiunge elementi a diversi oggetti .NET Framework esistenti. Il file Types.ps1xml si trova nella directory di installazione di Windows PowerShell ($PSHOME). È possibile creare un file di tipi personalizzato per estendere ulteriormente tali oggetti o per estendere altri oggetti. Quando si estende un oggetto utilizzando un file di tipi, qualsiasi istanza dell'oggetto viene estesa con i nuovi elementi.
Estensione dell'oggetto System.Array
Nell'esempio seguente viene illustrato come Windows PowerShell estende l'oggetto System.Array nel file Types.ps1xml. Per impostazione predefinita, oggetti System.Array hanno una proprietà Length che elenca il numero di oggetti nella matrice. Tuttavia, poiché il nome "length" non descrive chiaramente la proprietà , Windows PowerShell aggiunge la proprietà alias Count, che visualizza lo stesso valore della proprietà Length. Il codice XML seguente aggiunge la proprietà Count al tipo System.Array.
<Type>
<Name>System.Array</Name>
<Members>
<AliasProperty>
<Name>Count</Name>
<ReferencedMemberName>Length</ReferencedMemberName>
</AliasProperty>
</Members>
</Type>
Per visualizzare questa nuova proprietà alias, usare un comando Get-Member in qualsiasi matrice, come illustrato nell'esempio seguente.
Get-Member -InputObject (1,2,3,4)
Il comando restituisce i risultati seguenti.
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;}
È possibile utilizzare la proprietà Count o la proprietà Length per determinare il numero di oggetti in una matrice. Per esempio:
PS> (1, 2, 3, 4).Count
4
PS> (1, 2, 3, 4).Length
4
File di tipi personalizzati
Per creare un file di tipi personalizzati, iniziare copiando un file di tipi esistente. Il nuovo file può avere qualsiasi nome, ma deve avere un'estensione di file .ps1xml. 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.
Per aggiungere tipi estesi personalizzati al file, aggiungere un elemento types per ogni oggetto che si desidera estendere. Negli argomenti seguenti vengono forniti esempi.
Per altre informazioni sull'aggiunta di proprietà e set di proprietà, vedere proprietà estese
Per altre informazioni sull'aggiunta di metodi, vedere metodi estesi.
Per altre informazioni sull'aggiunta di set di membri, vedere set di membri estesi.
Dopo aver definito i propri tipi estesi, usare uno dei metodi seguenti per rendere disponibili gli oggetti estesi:
- Per rendere disponibile il file dei tipi estesi per la sessione corrente, usare il cmdlet Update-TypeData per aggiungere il nuovo file. Se si vuole che i tipi hanno la precedenza sui tipi definiti in altri file di tipi (incluso il file Types.ps1xml), usare il parametro
PrependDatadel cmdlet Update-TypeData. - Per rendere disponibile il file dei tipi estesi per tutte le sessioni future, aggiungere il file dei tipi a un modulo, esportare la sessione corrente o aggiungere il comando Update-TypeData al profilo di Windows PowerShell.
File dei tipi di firma
I file di tipi devono essere firmati digitalmente per evitare manomissioni perché il codice XML può includere blocchi di script. Per altre informazioni sull'aggiunta di firme digitali, vedere about_Signing
Vedere anche
definizione delle proprietà predefinite per gli oggetti
definizione di metodi predefiniti per gli oggetti