Nome provider

Function

Unità

Function:

Descrizione breve

Consente di accedere alle funzioni definite in Windows PowerShell.

Descrizione dettagliata

Il provider Function di Windows PowerShell consente di ottenere, aggiungere, modificare, cancellare ed eliminare le funzioni e i filtri in Windows PowerShell.

Una funzione è un blocco di codice denominato tramite cui viene eseguita un'azione. Quando si digita il nome della funzione, viene eseguito il codice contenuto nella funzione. Un filtro è un blocco di codice denominato tramite cui vengono definite condizioni specifiche per un'azione. È possibile digitare il nome del filtro al posto della condizione, ad esempio in un comando Where-Object.

Nell'unità Function:, le funzioni e i filtri sono preceduti rispettivamente dall'etichetta "Function" e dall'etichetta "Filter", ma, se utilizzati nel contesto corretto, operano nel modo appropriato indipendentemente dall'etichetta.

Il provider Function è uno spazio dei nomi flat che contiene solo gli oggetti funzione e filtro. Né le funzioni né i filtri contengono elementi figlio.

Ogni funzione è un'istanza della classe System.Management.Automation.FunctionInfo. Ogni filtro è un'istanza della classe System.Management.Automation.FilterInfo.

Negli esempi inclusi in questa sezione viene illustrata la gestione delle funzioni, ma è possibile utilizzare gli stessi metodi per gestire i filtri.

Il provider Function espone il relativo archivio dati nell'unità Function:. Per utilizzare le funzioni, è possibile modificare il percorso dell'unità Function: ("set-location function:"). In alternativa, è possibile utilizzarle da un'altra unità di Windows PowerShell. Per fare riferimento a una funzione da un altro percorso, utilizzare il nome di unità (Function:) nel percorso.

Il provider Function supporta tutti i cmdlet i cui nomi contengono il sostantivo Item (i cmdlet Item), ad eccezione di Invoke-Item. Supporta inoltre i cmdlet Get-Content e Set-Content. Il provider, tuttavia, non supporta i cmdlet i cui nomi contengono il sostantivo ItemProperty (i cmdlet ItemProperty), né il parametro Filter in alcun cmdlet.

Tutte le modifiche apportate alle funzioni influiscono solo sulla console corrente. Per salvare le modifiche, aggiungere la funzione al profilo di Windows PowerShell oppure utilizzare Export-Console per salvare la console corrente.

Esempi

Accesso all'unità Function:

-------------------------- ESEMPIO 1 --------------------------

Modifica il percorso corrente dell'unità Function:. È possibile utilizzare questo comando da qualsiasi unità in Windows PowerShell. Per tornare a un'unità del file system, digitare il nome dell'unità. Digitare, ad esempio, set-location c:".

set-location function:

Recupero di funzioni

-------------------------- ESEMPIO 1 --------------------------

Con questo comando viene ottenuto l'elenco di tutte le funzioni nella sessione corrente. È possibile utilizzare questo comando da qualsiasi unità di Windows PowerShell.

get-childitem -path function:

-------------------------- ESEMPIO 2 --------------------------

Con questo comando viene ottenuta la funzione "man" dall'unità Function:. Per ottenere la funzione, viene utilizzato il cmdlet Get-Item. L'operatore pipeline (|) invia il risultato a Format-Table.

Con il parametro Wrap il testo che non può essere incluso in una riga viene spostato nella riga successiva. Tramite il parametro Autosize vengono ridimensionate le colonne di tabella per adattarle alla lunghezza del testo.

get-item -path man | format-table -wrap -autosize

Se l'unità utilizzata è diversa, aggiungere il nome di unità Function: al percorso.

-------------------------- ESEMPIO 3 --------------------------

Tramite entrambi questi comandi viene ottenuta la funzione denominata "c:". Il primo comando può essere utilizzato in qualsiasi unità. Il secondo comando viene utilizzato nell'unità Function:.

Poiché il nome termina con il carattere due punti, che costituisce la sintassi per un'unità, è necessario qualificare il percorso con il nome dell'unità. Nell'unità Function: è possibile utilizzare entrambi i formati. Nel secondo comando il punto (.) rappresenta il percorso corrente.

c:\PS> get-item -path function:c:

PS Function> get-item -path .\c:

Creazione di una funzione

-------------------------- ESEMPIO 1 --------------------------

In questo comando viene utilizzato il cmdlet New-Item per creare una funzione denominata "HKLM:". L'espressione racchiusa tra parentesi graffe è il blocco di script rappresentato dal nome della funzione.

new-item -path function:hklm: -value {set-location hklm:}

È inoltre possibile creare una funzione digitandola nella riga di comando di Windows PowerShell. Digitare, ad esempio, "function:hklm: {set-location hklm:}". Se ci si trova nell'unità Function:, è possibile omettere il nome dell'unità. Poiché in New-Item non è possibile specificare l'etichetta "Filter", i filtri sono contrassegnati come funzioni, ma operano nel modo corretto indipendentemente dall'etichetta. Per creare un filtro con l'etichetta "Filter", digitare il filtro nella riga di comando, ad esempio "filter:Running {$_.Status -eq "Running"}".

-------------------------- ESEMPIO 2 --------------------------

In questo comando viene utilizzato il cmdlet New-Item per creare una funzione denominata Csrss. Viene utilizzato il parametro dinamico Options per specificare il valore ReadOnly per la proprietà Options della funzione.

new-item -path function: -name csrss -options readonly -value {get-process csrss}

È possibile utilizzare questo comando da qualsiasi percorso. Se il comando viene eseguito dall'unità Function:, è possibile utilizzare un punto (.) per specificare il percorso. Il punto (.) rappresenta il percorso corrente.

Eliminazione di una funzione

-------------------------- ESEMPIO 1 --------------------------

Con questo comando viene eliminata la funzione "hklm:" dalla sessione corrente.

remove-item function:hklm:

-------------------------- ESEMPIO 2 --------------------------

Con questo comando vengono eliminate tutte le funzioni dalla sessione corrente, ad eccezione di quelle la cui proprietà Options ha valore Constant. Se il parametro Force non è specificato, non verranno eliminate le funzioni la cui proprietà Options ha valore ReadOnly.

remove-item function:* -force

Quando si eliminano tutte le funzioni, viene modificato il prompt dei comandi, in quanto viene eliminata la funzione prompt che ne definisce il contenuto.

Visualizzazione delle proprietà e dei metodi delle funzioni

-------------------------- ESEMPIO 1 --------------------------

In questo comando viene utilizzato il cmdlet Get-Item per ottenere tutte le funzioni. L'operatore pipeline invia i risultati al cmdlet Get-Member, che visualizza i metodi e le proprietà dell'oggetto.

get-item -path function:* | get-member

Quando si reindirizza una raccolta di oggetti, ad esempio una raccolta di funzioni nell'unità Function:, a Get-Member, con Get-Member viene valutato ogni oggetto nella raccolta separatamente e vengono quindi restituite le informazioni su ciascun tipo di oggetto trovato. Se tutti gli oggetti appartengono allo stesso tipo, vengono restituite informazioni sul singolo tipo di oggetto. In tal caso, tutti le funzioni saranno oggetti FunctionInfo. Per ottenere informazioni sulla raccolta di oggetti FunctionInfo, utilizzare il parametro InputObject di Get-Member. Digitare, ad esempio, "get-member -InputObject (get-item function:*)". Quando si utilizza il parametro InputObject, con Get-Member viene valutata la raccolta e non gli oggetti in essa contenuti.

-------------------------- ESEMPIO 2 --------------------------

Tramite questo comando vengono elencati i valori delle proprietà della funzione "prompt". Viene utilizzato il cmdlet Get-Item per ottenere un oggetto che rappresenta la funzione "prompt". I risultati vengono inviati al comando Format-List dall'operatore pipeline (|). Con il comando Format-List viene utilizzato il parametro Property con carattere jolly (*) per formattare e visualizzare i valori di tutte le proprietà della funzione "prompt".

get-item function:prompt | format-list -property *

Modifica delle proprietà di una funzione

-------------------------- ESEMPIO 1 --------------------------

È possibile utilizzare il cmdlet Set-Item con il parametro dinamico Options per modificare il valore della proprietà Options di una funzione.

Tramite questo comando vengono impostate le opzioni AllScope e ReadOnly per la funzione "prompt". Viene utilizzato il parametro dinamico Options del cmdlet Set-Item. Il parametro Options è disponibile in Set-Item solo se utilizzato con il provider Alias o Function.

set-item -path function:prompt -options "AllScope,ReadOnly"

-------------------------- ESEMPIO 2 --------------------------

In questo comando viene utilizzato il cmdlet Set-Item per modificare la funzione "prompt" affinché le informazioni relative a data e ora vengano visualizzate prima del percorso.

set-item -path function:prompt -value {'PS '+ $(Get-Date -format t) + " " + $(Get-Location) + '> '}

La modifica influisce su entrambe le proprietà Definition e ScriptBlock dell'oggetto FunctionInfo. Per visualizzare l'effetto della modifica, digitare "get-item -path function:prompt | format-list -property *".

-------------------------- ESEMPIO 3 --------------------------

In questo comando viene utilizzato il cmdlet Rename-Item per modificare il nome della funzione "help" in "gh".

rename-item -path function:help -newname gh

Copia di una funzione

-------------------------- ESEMPIO 1 --------------------------

Con questo comando viene copiata la funzione "prompt" in "oldPrompt", creando in modo efficace un nuovo nome per il blocco di script associato alla funzione. È possibile utilizzare questo comando per salvare la funzione prompt originale se si prevede di modificarla.

La proprietà Options della nuova funzione avrà valore None. Per modificare il valore della proprietà Options, utilizzare Set-Item.

copy-item -path function:prompt -destination function:oldPrompt

Parametri dinamici

I parametri dinamici sono parametri di cmdlet aggiunti da un provider di Windows PowerShell e disponibili solo quando il cmdlet viene utilizzato nell'unità abilitata dal provider.

Options <System.Management.Automation.ScopedItemOptions>

Determina il valore della proprietà Options di una funzione.

Value Description

None

Nessuna opzione. "None" rappresenta il valore predefinito.

Constant

La funzione non può essere eliminata e non è possibile modificarne le proprietà. Il valore Constant è disponibile solo quando si crea una funzione. Non è possibile modificare in Constant l'opzione di una funzione esistente.

Private

La funzione è visibile solo nell'ambito corrente e non negli ambiti figlio.

ReadOnly

Non è possibile modificare le proprietà della funzione, a meno che non si utilizzi il parametro Force. È possibile utilizzare Remove-Item per eliminare la funzione.

AllScope

La funzione viene copiata in qualsiasi nuovo ambito creato.

Cmdlet supportati

Vedere anche




Argomenti della Guida