about_Execution_Policies

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

ARGOMENTO

about_Execution_Policies

DESCRIZIONE BREVE

Descrive i criteri di esecuzione di Windows PowerShell® e illustra come gestirli.

DESCRIZIONE LUNGA

I criteri di esecuzione di Windows PowerShell consentono di determinare le condizioni in cui Windows PowerShell carica i file di configurazione ed esegue gli script.

È possibile impostare un criterio di esecuzione per il computer locale, per l'utente corrente o per una sessione specifica. È possibile anche usare un'impostazione di Criteri di gruppo per impostare il criterio di esecuzione per computer e utenti.

I criteri di esecuzione per il computer locale e l'utente corrente vengono archiviati nel Registro di sistema. Non è necessario impostare i criteri di esecuzione nel profilo di Windows PowerShell. Il criterio di esecuzione per una sessione specifica viene archiviato solo in memoria e viene perso alla chiusura della sessione.

Il criterio di esecuzione non è un sistema di sicurezza che limita le azioni dell'utente. Ad esempio, gli utenti possono aggirare facilmente un criterio digitando il contenuto dello script alla riga di comando quando non è possibile eseguire uno script. Il criterio di esecuzione consente invece agli utenti di impostare le regole di base impedendone la violazione involontaria.

CRITERI DI ESECUZIONE DI WINDOWS POWERSHELL

I criteri di esecuzione di Windows PowerShell sono i seguenti:

"Restricted" è il criterio predefinito.

RESTRICTED

- Criterio di esecuzione predefinito in Windows 8, Windows Server 2012 e Windows 8.1.

- Permette comandi singoli, ma non l'esecuzione di script.

- Impedisce l'esecuzione di tutti i file di script, compresi i file di formattazione e configurazione (con estensione ps1xml), i file di script del modulo (con estensione psm1) e i profili di Windows PowerShell (con estensione ps1).

ALLSIGNED

- Consente l'esecuzione degli script.

- È necessario che tutti gli script e i file di configurazione siano firmati da un autore attendibile, compresi quelli creati nel computer locale.

- Richiede conferma prima di eseguire gli script di autori che non sono stati ancora classificati come attendibili o non attendibili.

- Espone a rischi eseguendo script firmati ma dannosi.

REMOTESIGNED

- Consente l'esecuzione degli script. È il criterio di esecuzione predefinito in Windows Server 2012 R2.

- Richiede una firma digitale di un autore attendibile per gli script e i file di configurazione scaricati da Internet (compresi i programmi di posta elettronica e di messaggistica istantanea).

- Non richiede le firme digitali per gli script scritti nel computer locale (non scaricati da Internet).

- Esegue gli script scaricati da Internet e non firmati, se gli script sono sbloccati, usando ad esempio il cmdlet Unblock-File.

- Espone a rischi eseguendo script non firmati da origini diverse da Internet e script firmati, ma dannosi.

UNRESTRICTED

- Consente l'esecuzione di script non firmati. Questo criterio espone a rischi eseguendo script dannosi.

- Avvisa l'utente prima di eseguire script e file di configurazione scaricati da Internet.

BYPASS

- Non viene bloccato niente e non vengono visualizzati avvisi né richieste di conferma.

- Questo criterio di esecuzione è progettato per le configurazioni in cui uno script di Windows PowerShell viene incorporato in un'applicazione più grande o per le configurazioni in cui Windows PowerShell è la base per un programma che ha un proprio modello di sicurezza.

UNDEFINED

- Non sono impostati criteri di esecuzione nell'ambito corrente.

- Se il criterio di esecuzione in tutti gli ambiti è Undefined, verrà usato il criterio di esecuzione predefinito Restricted.

Nota: nei sistemi in cui non viene fatta distinzione tra i percorsi UNC (Universal Naming Convention) e i percorsi Internet, è possibile che gli script identificati da un percorso UNC non vengano eseguiti con il criterio di esecuzione RemoteSigned.

AMBITO DEI CRITERI DI ESECUZIONE

È possibile impostare un criterio di esecuzione da usare solo in un ambito specifico.

I valori validi per Scope sono Process, CurrentUser e LocalMachine. LocalMachine è l'impostazione predefinita per la configurazione di un criterio di esecuzione.

I valori del parametro Scope sono elencati in ordine di precedenza.

- PROCESS

Il criterio di esecuzione influisce solo sulla sessione corrente (il processo corrente di Windows PowerShell).

Il criterio di esecuzione viene archiviato nella variabile di ambiente $env:PSExecutionPolicyPreference, non nel Registro di sistema, e viene eliminato alla chiusura della sessione. Non è possibile modificare il criterio modificando il valore della variabile.

- CURRENTUSER

Il criterio di esecuzione influisce solo sull'utente corrente. Viene archiviato nella sottochiave del Registro di sistema HKEY_CURRENT_USER.

- LOCALMACHINE

Il criterio di esecuzione influisce su tutti gli utenti del computer corrente. Viene archiviato nella sottochiave del Registro di sistema HKEY_LOCAL_MACHINE.

Il criterio che ha la precedenza viene applicato nella sessione corrente, anche se è stato impostato un criterio più restrittivo a un livello di precedenza inferiore.

Per altre informazioni, vedere Set-ExecutionPolicy.

OTTENERE UN CRITERIO DI ESECUZIONE

Per ottenere il criterio di esecuzione di Windows PowerShell attivo nella sessione corrente, usare il cmdlet Get-ExecutionPolicy.

Il comando seguente ottiene il criterio di esecuzione corrente:

Get-ExecutionPolicy    

Per ottenere tutti i criteri di esecuzione che influiscono sulla sessione corrente e visualizzarli in ordine di precedenza, digitare:

        Get-ExecutionPolicy -List

Il risultato sarà simile all'output di esempio seguente:

                  Scope    ExecutionPolicy
                  -----    ---------------
          MachinePolicy          Undefined
             UserPolicy          Undefined
                Process          Undefined
            CurrentUser       RemoteSigned
           LocalMachine          AllSigned

In questo caso, il criterio di esecuzione valido è RemoteSigned perché il criterio di esecuzione per l'utente corrente ha la precedenza sul criterio di esecuzione impostato per il computer locale.

Per ottenere il criterio di esecuzione impostato per un ambito specifico, usare il parametro Scope di Get-ExecutionPolicy.

Il comando seguente ad esempio ottiene il criterio di esecuzione per l'ambito dell'utente corrente.

        Get-ExecutionPolicy -Scope CurrentUser
        

MODIFICARE UN CRITERIO DI ESECUZIONE

Per modificare il criterio di esecuzione di Windows PowerShell nel computer in uso, usare il cmdlet Set-ExecutionPolicy.

La modifica sarà effettiva immediatamente. Non è necessario riavviare Windows PowerShell.

Se si imposta il criterio di esecuzione per il computer locale (impostazione predefinita) o l'utente corrente, la modifica viene salvata nel Registro di sistema e rimane effettiva fino alla successiva modifica.

Se si imposta il criterio di esecuzione del processo corrente, la modifica non viene salvata nel Registro di sistema. Viene mantenuta fino alla chiusura del processo corrente e di tutti i processi figlio.

Nota: in Windows Vista e nelle versioni successive di Windows per eseguire i comandi che modificano il criterio di esecuzione per il computer locale (impostazione predefinita), avviare Windows PowerShell con l'opzione "Esegui come amministratore".

Per modificare il criterio di esecuzione, digitare:

        Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Ad esempio:

        Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Per impostare il criterio di esecuzione in un ambito specifico, digitare:

        Set-ExecutionPolicy -ExecutionPolicy <PolicyName> -Scope <scope>

Ad esempio:

        Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Un comando che modifica un criterio di esecuzione può riuscire ma tuttavia non modificare il criterio di esecuzione applicato.

Ad esempio, un comando che imposta il criterio di esecuzione per il computer locale può riuscire ma essere sottoposto a override dal criterio di esecuzione per l'utente corrente.

RIMUOVERE UN CRITERIO DI ESECUZIONE

Per rimuovere il criterio di esecuzione per un ambito specifico, impostare il valore del criterio di esecuzione su Undefined.

Ad esempio, per rimuovere il criterio di esecuzione per tutti gli utenti del computer locale, digitare:

        Set-ExecutionPolicy Undefined

In alternativa, digitare:

        Set-ExecutionPolicy Undefined -scope LocalMachine

Se in nessun ambito sono impostati criteri di esecuzione, verrà usato il criterio di esecuzione predefinito Restricted.

IMPOSTARE UN CRITERIO DI ESECUZIONE DIVERSO PER UNA SESSIONE

È possibile usare il parametro ExecutionPolicy di PowerShell.exe per impostare un criterio di esecuzione per una nuova sessione di Windows PowerShell. Il criterio influisce solo sulla sessione corrente e sulle sessioni figlio.

Per impostare il criterio di esecuzione per una nuova sessione, avviare Windows PowerShell dalla riga di comando (ad esempio Cmd.exe o Windows PowerShell) e quindi usare il parametro ExecutionPolicy di PowerShell.exe per impostare il criterio di esecuzione.

Ad esempio:

PowerShell.exe -ExecutionPolicy AllSigned

Il criterio di esecuzione impostato non viene archiviato nel Registro di sistema ma nella variabile di ambiente $env:PSExecutionPolicyPreference. La variabile viene eliminata alla chiusura della sessione in cui è impostato il criterio. Non è possibile modificare il criterio modificando il valore della variabile.

Durante la sessione, il criterio di esecuzione impostato per la sessione ha la precedenza su un criterio di esecuzione impostato nel Registro di sistema per il computer locale o l'utente corrente. Non ha tuttavia la precedenza sul criterio di esecuzione impostato con un'impostazione di Criteri di gruppo (illustrata più avanti).

USARE I CRITERI DI GRUPPO PER GESTIRE UN CRITERIO DI ESECUZIONE

È possibile usare l'impostazione di Criteri di gruppo "Attiva l'esecuzione di script" per gestire il criterio di esecuzione dei computer dell'organizzazione. L'impostazione di Criteri di gruppo esegue l'override dei criteri di esecuzione impostati in Windows PowerShell in tutti gli ambiti.

Le impostazioni del criterio "Attiva l'esecuzione di script" sono le seguenti:

-- Se si disabilita "Attiva l'esecuzione di script", gli script non vengono eseguiti. Equivale al criterio di esecuzione "Restricted".

-- Se si abilita "Attiva l'esecuzione di script", è possibile selezionare un criterio di esecuzione. Le impostazioni di Criteri di gruppo sono equivalenti alle impostazioni dei criteri di esecuzione seguenti.

        Group Policy                Execution Policy  
        ------------                ----------------
        Allow all scripts.          Unrestricted

        Allow local scripts         RemoteSigned
        and remote signed
        scripts. 

        Allow only signed           AllSigned
        scripts.

-- Se "Attiva l'esecuzione di script" non è configurata, non ha alcun effetto. È valido il criterio di esecuzione impostato in Windows PowerShell.

I file PowerShellExecutionPolicy.adm e PowerShellExecutionPolicy.admx aggiungono il criterio "Attiva l'esecuzione di script" ai nodi Configurazione computer e Configurazione utente nell'Editor Criteri di gruppo nei percorsi seguenti.

        For Windows XP and Windows Server 2003:
        Administrative Templates\Windows Components\Windows PowerShell

        For Windows Vista and later versions of Windows:
        Administrative Templates\Classic Administrative Templates\
        Windows Components\Windows PowerShell

I criteri impostati nel nodo Configurazione computer hanno la precedenza sui criteri impostati nel nodo Configurazione utente.

Il file PowerShellExecutionPolicy.adm è disponibile nell'Area download Microsoft. Per altre informazioni, vedere l'articolo relativo ai modelli amministrativi per Windows PowerShell all'indirizzo https://go.microsoft.com/fwlink/?LinkId=131786.

Per altre informazioni, vedere about_Group_Policy_Settings all'indirizzo https://go.microsoft.com/fwlink/?LinkID=251696.

PRECEDENZA DEI CRITERI DI ESECUZIONE

Per determinare il criterio di esecuzione valido per una sessione, Windows PowerShell valuta i criteri di esecuzione nell'ordine di precedenza seguente:

        - Group Policy: Computer Configuration
        - Group Policy: User Configuration
        - Execution Policy: Process (or PowerShell.exe -ExecutionPolicy)
        - Execution Policy: CurrentUser
        - Execution Policy: LocalMachine    

GESTIRE GLI SCRIPT FIRMATI E NON FIRMATI

Se il criterio di esecuzione di Windows PowerShell è RemoteSigned, Windows PowerShell non eseguirà gli script non firmati scaricati da Internet, compresi i programmi di posta elettronica e di messaggistica istantanea.

È possibile firmare lo script o scegliere di eseguire uno script non firmato senza modificare il criterio di esecuzione.

A partire da Windows PowerShell 3.0, è possibile usare il parametro Stream del cmdlet Get-Item per rilevare i file bloccati perché sono stati scaricati da Internet ed è possibile usare il cmdlet Unblock-File per sbloccare gli script in modo da poterli eseguire in Windows PowerShell.

Per altre informazioni, vedere about_Signing, Get-Item e Unblock-File.

VEDERE ANCHE

about_Environment_Variables

about_Signing

Get-ExecutionPolicy

Set-ExecutionPolicy

Get-Item

Unblock-File

"Modelli amministrativi per Windows PowerShell"

(https://go.microsoft.com/fwlink/?LinkId=131786)

"Guida della console PowerShell.exe"

(https://go.microsoft.com/fwlink/?LinkID=113439)