Condividi tramite


about_Function_Provider

Nome del fornitore

Funzione

Dischi

Function:

Capacità

ShouldProcess

Breve descrizione

Fornisce l'accesso alle funzioni definite in PowerShell.

Descrizione dettagliata

Il provider funzione di PowerShell consente di ottenere, aggiungere, modificare, svuotare ed eliminare le funzioni e i filtri in PowerShell.

Una funzione è un blocco denominato di codice che esegue un'azione. Quando si digita il nome della funzione, il codice nella funzione viene eseguito. Un filtro è un blocco denominato di codice che stabilisce condizioni per un'azione. È possibile digitare il nome del filtro al posto della condizione, ad esempio in un comando Where-Object.

L'unità di funzione è uno spazio dei nomi piatto che contiene solo le funzioni e gli oggetti filtro. Né le funzioni né i filtri hanno elementi figlio.

Il provider della funzione supporta i seguenti cmdlet, illustrati in questo articolo.

Tipi esposti da questo provider

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

Il provider funzione espone il suo archivio dati nell'unità Function:. Per usare le funzioni, puoi passare all'unità di memoria Function: (Set-Location Function:). Oppure, puoi lavorare da un altro drive di PowerShell. Per fare riferimento a una funzione da un'altra posizione, usare il nome dell'unità (Function:) nel percorso.

Set-Location Function:

Per tornare a un'unità disco, digitare il nome dell'unità. Ad esempio, digitare:

Set-Location C:

È anche possibile lavorare con il provider Funzione da qualsiasi unità di PowerShell. Per fare riferimento a una funzione da un'altra posizione, usare il nome dell'unità Function: nel percorso.

Nota

PowerShell usa gli alias per consentire un modo familiare di lavorare con i percorsi del provider. I comandi come dir e ls sono ora alias per Get-ChildItem, cd è un alias per set-location e pwd è un alias per Get-Location.

Recupero di funzioni

Questo comando ottiene l'elenco di tutte le funzioni nella sessione corrente. È possibile usare questo comando da qualsiasi unità di PowerShell.

Get-ChildItem -Path Function:

Il provider di funzioni non ha contenitori, quindi il comando precedente ha lo stesso effetto quando viene usato con Get-ChildItem.

Get-ChildItem -Path Function:

È possibile recuperare la definizione di una funzione accedendo alla proprietà definizione , come illustrato di seguito.

(Get-Item -Path Function:more).Definition

È anche possibile recuperare la definizione di una funzione usando il relativo percorso del provider preceduto dal segno di dollaro ($).

$Function:more

Per recuperare la definizione di una funzione che ha un trattino (-) nel nome, inserire il valore dopo il simbolo del dollaro tra parentesi graffe.

${Function:Clear-Host}

Ottenere funzioni selezionate

Questo comando ottiene la funzione man dall'unità Function:. Usa il cmdlet Get-Item per ottenere la funzione. L'operatore pipeline (|) invia il risultato a Format-Table. Il parametro -Wrap indirizza il testo che non rientra nella riga successiva. Il parametro -AutoSize ridimensiona le colonne della tabella in modo da contenere il testo.

Get-Item -Path man | Format-Table -Wrap -AutoSize

Gestione dei percorsi dei provider di funzioni

Questi comandi ottengono entrambe la funzione denominata C:. Il primo comando può essere usato in qualsiasi unità. Il secondo comando viene usato nel disco Function:. Poiché il nome termina con due punti, ovvero la sintassi per un'unità, è necessario qualificare il percorso con il nome dell'unità. All'interno dell'unità Function: è possibile usare entrambi i formati. Nel secondo comando il punto (.) rappresenta la posizione corrente.

PS C:\> Get-Item -Path Function:c:
PS Function:\> Get-Item -Path .\c:

Creazione di una funzione

Questo comando usa il cmdlet New-Item per creare una funzione denominata Win32:. L'espressione tra parentesi graffe è il blocco di script rappresentato dal nome della funzione.

New-Item -Path Function:Win32: -Value {Set-Location C:\Windows\System32}

Ambiti

Proprio come le variabili, le funzioni appartengono a un ambito specifico. Quando si crea una funzione, è disponibile solo nell'ambito in cui è stato creato. Per rendere disponibile una funzione, usare un modificatore di ambito quando si crea la funzione. Per altre informazioni, vedere about_Scopes.

Nell'esempio seguente viene usato il modificatore di ambito Global: per creare una funzione nell'ambito globale.

function New-Function {
    param(
        [string] $Name,
        [scriptblock] $Script
    )

    $lp = "Function:\Global:$($Name)"
    Set-Item -LiteralPath $lp -Value $Script -PassThru -Force
}

New-Function -Name 'Win32:' -Script { Set-Location C:\Windows\System32 }

Senza il modificatore di ambito Global:, la funzione verrà creata nell'ambito locale. Quando New-Function esce dalla funzione appena creata non esisterebbe più.

Eliminazione di una funzione

Questo comando elimina la funzione more dalla sessione corrente.

Remove-Item Function:more

Modifica di una funzione

Questo comando usa il cmdlet Set-Item per modificare la funzione prompt in modo che visualizzi l'ora prima del percorso.

Set-Item -Path Function:prompt -Value {
  'PS '+ (Get-Date -Format t) + " " + (Get-Location) + '> '
  }

Rinominare una funzione

Questo comando usa il cmdlet Rename-Item per modificare il nome della funzione help in gh.

Rename-Item -Path Function:help -NewName gh

Copia di una funzione

Questo comando copia la prompt funzione in oldPrompt, creando in modo efficace un nuovo nome per lo scriptblock associato alla funzione prompt. È possibile usarlo per salvare la funzione di richiesta originale se si prevede di modificarla. La proprietà Opzioni della nuova funzione ha un valore pari a . Per modificare il valore della proprietà Opzioni , utilizzare Set-Item.

Copy-Item -Path Function:prompt -Destination Function:oldPrompt

Parametri dinamici

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

Opzioni <[System.Management.Automation.ScopedItemOptions]>

Determina il valore della proprietà Options della funzione .

  • None: nessuna opzione. None è l'impostazione predefinita.
  • Constant: la funzione non può essere eliminata e le relative proprietà non possono essere modificate. Constant è disponibile solo quando si crea una funzione. Non è possibile modificare l'opzione di una funzione esistente impostando Constant.
  • Private: la funzione è visibile solo nell'ambito corrente
  • (non negli ambiti figli).
  • ReadOnly: le proprietà della funzione non possono essere modificate, ad eccezione del parametro -Force. È possibile usare Remove-Item per eliminare la funzione.
  • AllScope: la funzione viene copiata in tutti i nuovi ambiti creati.

Cmdlet supportati

Uso della pipeline

I cmdlet del provider accettano l'input della pipeline. È possibile usare la pipeline per semplificare l'attività inviando i dati del provider da un cmdlet a un altro cmdlet del provider. Per altre informazioni su come usare la pipeline con i cmdlet del provider, vedere i riferimenti ai cmdlet forniti in questo articolo.

Ottenere assistenza

A partire da Windows PowerShell 3.0, è possibile ottenere argomenti della Guida personalizzati per i cmdlet del provider che illustrano il comportamento di tali cmdlet in un'unità file system.

Per ottenere gli argomenti della Guida personalizzati per l'unità del file system, eseguire un comando Get-Help in un'unità del file system o usare il parametro di Get-Help per specificare un'unità del file system.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path Function:

Vedere anche