Condividi tramite


Informazioni sui criteri di esecuzione

Descrizione breve

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

Descrizione lunga

I criteri di esecuzione di PowerShell sono una funzionalità di sicurezza che controlla le condizioni in cui PowerShell carica i file di configurazione ed esegue gli script. Questa funzionalità consente di evitare l'esecuzione di script dannosi.

In un computer Windows è possibile impostare criteri di esecuzione per il computer locale, per l'utente corrente o per una determinata sessione. È anche possibile usare un'impostazione di Criteri di gruppo per impostare i criteri 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 PowerShell. Il criterio di esecuzione per una determinata sessione viene archiviato solo in memoria e viene perso quando la sessione viene chiusa.

Il criterio di esecuzione non è un sistema di sicurezza che limita le azioni dell'utente. Ad esempio, gli utenti possono ignorare facilmente un criterio digitando il contenuto dello script nella riga di comando quando non possono eseguire uno script. Al contrario, il criterio di esecuzione consente agli utenti di impostare le regole di base e impedisce loro di violarle involontariamente.

Criteri di esecuzione di PowerShell

I criteri di esecuzione di PowerShell sono i seguenti:

AllSigned

  • È possibile eseguire gli script.
  • è necessario che tutti gli script e i file di configurazione siano firmati da un autore attendibile, compresi quelli creati nel computer locale.
  • Richiede l'utente prima di eseguire script di editori che non sono ancora stati classificati come attendibili o non attendibili.
  • Rischi per l'esecuzione di script firmati, ma dannosi.

Bypass

  • non viene bloccato niente e non vengono visualizzati avvvisi né prompt.
  • Questo criterio di esecuzione è progettato per le configurazioni in cui uno script di PowerShell viene incorporato in un'applicazione di dimensioni maggiori o per le configurazioni in cui PowerShell costituisce la base per un programma con un proprio modello di sicurezza.

Predefinito

  • Imposta i criteri di esecuzione predefiniti.
  • Limitato per i client Windows.
  • RemoteSigned per i server Windows.

RemoteSigned

  • Criteri di esecuzione predefiniti per i computer Windows Server.
  • È possibile eseguire gli script.
  • Richiede una firma digitale di un autore attendibile per gli script e i file di configurazione scaricati da Internet che includono programmi di posta elettronica e messaggistica immediata.
  • Non richiede firme digitali per gli script scritti nel computer locale e non scaricati da Internet.
  • Esegue gli script scaricati da Internet e non firmati, se gli script sono sbloccati, ad esempio usando il Unblock-File cmdlet.
  • Rischi per l'esecuzione di script non firmati da origini diverse da Internet e script firmati, ma dannosi.

Con restrizioni

  • Criteri di esecuzione predefiniti per i computer client Windows.
  • Consente i singoli comandi, ma non gli script.
  • Impedisce l'esecuzione di tutti i file di script, inclusi i file di configurazione e di configurazione ( .ps1xml ), i file script del modulo ( .psm1 ) e i profili di PowerShell ( .ps1 ).

Non definito

  • Nessun criterio di esecuzione impostato nell'ambito corrente.
  • Se i criteri di esecuzione in tutti gli ambiti non sono definiti, i criteri di esecuzione validi sono limitati, ovvero i criteri di esecuzione predefiniti.

Senza restrizioni

  • Il criterio di esecuzione predefinito per i computer non Windows e non può essere modificato.
  • È possibile eseguire gli script non firmati. Si rischia di eseguire script dannosi.
  • Avvisa l'utente prima di eseguire script e file di configurazione che non sono dall'area Intranet locale.

Nota

Nei sistemi che non distinguono i percorsi di Universal Naming Convention (UNC) dai percorsi Internet, è possibile che gli script identificati da un percorso UNC non siano consentiti per l'esecuzione con i criteri di esecuzione RemoteSigned .

Ambito dei criteri di esecuzione

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

I valori validi per l' ambito sono MachinePolicy, UserPolicy, Process, CurrentUsere LocalMachine. LocalMachine è l'impostazione predefinita quando si impostano i criteri di esecuzione.

I valori di ambito sono elencati in ordine di precedenza. Il criterio che ha la precedenza è efficace nella sessione corrente, anche se è stato impostato un criterio più restrittivo a un livello di precedenza più basso.

Per ulteriori informazioni, vedere Set-ExecutionPolicy.

MachinePolicy

Impostata da un Criteri di gruppo per tutti gli utenti del computer.

UserPolicy

Impostata da un Criteri di gruppo per l'utente corrente del computer.

Process

L'ambito del processo influiscono solo sulla sessione corrente di PowerShell. I criteri di esecuzione vengono salvati nella variabile di ambiente $env:PSExecutionPolicyPreference , anziché nel registro di sistema. Quando la sessione di PowerShell viene chiusa, la variabile e il valore vengono eliminati.

CurrentUser

i criteri di esecuzione influiscono solo sull'utente corrente. Viene archiviato nella sottochiave del registro di sistema HKEY_CURRENT_USER .

LocalMachine

I criteri di esecuzione influiscono su tutti gli utenti del computer corrente. Viene archiviato nella sottochiave del registro di sistema HKEY_LOCAL_MACHINE .

Gestione dei criteri di esecuzione con PowerShell

Per ottenere i criteri di esecuzione effettivi per la sessione corrente di PowerShell, usare il Get-ExecutionPolicy cmdlet.

Il comando seguente ottiene i criteri di esecuzione effettivi:

Get-ExecutionPolicy

Per ottenere tutti i criteri di esecuzione che interessano la sessione corrente e visualizzarli in ordine di precedenza:

Get-ExecutionPolicy -List

Il risultato è simile all'output di esempio seguente:

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

In questo caso, i criteri di esecuzione validi sono RemoteSigned , perché i criteri di esecuzione per l'utente corrente hanno la precedenza sui criteri di esecuzione impostati per il computer locale.

Per ottenere i criteri di esecuzione impostati per un ambito specifico, usare il parametro scope di Get-ExecutionPolicy .

Ad esempio, il comando seguente ottiene i criteri di esecuzione per l'ambito CurrentUser :

Get-ExecutionPolicy -Scope CurrentUser

Modificare i criteri di esecuzione

Per modificare i criteri di esecuzione di PowerShell nel computer Windows, usare il Set-ExecutionPolicy cmdlet. La modifica ha effetto immediato. Non è necessario riavviare PowerShell.

Se si impostano i criteri di esecuzione per gli ambiti LocalMachine o CurrentUser, la modifica viene salvata nel registro di sistema e rimane valida fino a quando non viene modificata nuovamente.

Se si impostano i criteri di esecuzione per l'ambito del processo , non vengono salvati nel registro di sistema. I criteri di esecuzione vengono conservati finché il processo corrente e gli eventuali processi figlio non vengono chiusi.

Nota

In Windows Vista e nelle versioni successive di Windows, per eseguire comandi che modificano i criteri di esecuzione per il computer locale, ambito LocalMachine , avviare PowerShell con l'opzione Esegui come amministratore .

Per modificare i criteri di esecuzione:

Set-ExecutionPolicy -ExecutionPolicy <PolicyName>

Ad esempio:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Per impostare i criteri di esecuzione in un determinato ambito:

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

Ad esempio:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Un comando per modificare i criteri di esecuzione può avere esito positivo, ma non modificare i criteri di esecuzione effettivi.

Ad esempio, un comando che imposta i criteri di esecuzione per il computer locale può avere esito positivo, ma deve essere sostituito dai criteri di esecuzione per l'utente corrente.

Rimuovere i criteri di esecuzione

Per rimuovere i criteri di esecuzione per un ambito specifico, impostare i criteri di esecuzione su undefined.

Ad esempio, per rimuovere i criteri di esecuzione per tutti gli utenti del computer locale:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope LocalMachine

Per rimuovere i criteri di esecuzione per un ambito:

Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser

Se nessun criterio di esecuzione è impostato in alcun ambito, i criteri di esecuzione effettivi sono limitati, che è l'impostazione predefinita per i client Windows.

Impostare criteri diversi per una sessione

È possibile usare il parametro ExecutionPolicy di powershell.exe per impostare i criteri di esecuzione per una nuova sessione di PowerShell. Il criterio ha effetto solo sulla sessione corrente e sulle sessioni figlio.

Per impostare i criteri di esecuzione per una nuova sessione, avviare PowerShell dalla riga di comando, ad esempio cmd.exe o da PowerShell, quindi usare il parametro ExecutionPolicy di powershell.exe per impostare i criteri di esecuzione.

Ad esempio:

powershell.exe -ExecutionPolicy AllSigned

I criteri di esecuzione impostati non vengono archiviati nel registro di sistema. Viene invece archiviato nella $env:PSExecutionPolicyPreference variabile di ambiente. La variabile viene eliminata quando si chiude la sessione in cui è impostato il criterio. Non è possibile modificare il criterio modificando il valore della variabile.

Durante la sessione, i criteri di esecuzione impostati per la sessione hanno la precedenza su un criterio di esecuzione impostato nel registro di sistema del computer locale o dell'utente corrente. Tuttavia, non ha la precedenza sui criteri di esecuzione impostati utilizzando un Criteri di gruppo.

Usare Criteri di gruppo per gestire i criteri di esecuzione

È possibile utilizzare l'impostazione Attiva esecuzione Script criteri di gruppo per gestire i criteri di esecuzione dei computer dell'organizzazione. L'impostazione Criteri di gruppo sostituisce i criteri di esecuzione impostati in PowerShell in tutti gli ambiti.

Le impostazioni di attivazione dei criteri di esecuzione degli script sono le seguenti:

  • Se si disabilita l'attivazione dell'esecuzione dello script, gli script non vengono eseguiti. Equivale ai criteri di esecuzione limitati .

  • Se si abilita l'attivazione dell'esecuzione di script, è possibile selezionare i criteri di esecuzione. Le impostazioni Criteri di gruppo sono equivalenti alle impostazioni dei criteri di esecuzione seguenti:

    Criteri di gruppo Criteri di esecuzione
    Consenti tutti gli script Senza restrizioni
    Consenti script locali e script remoti firmati RemoteSigned
    Consenti solo script firmati AllSigned
  • Se l'attivazione dell'esecuzione dello script non è configurata, non ha alcun effetto. Il set di criteri di esecuzione in PowerShell è efficace.

I file PowerShellExecutionPolicy. adm e PowerShellExecutionPolicy. admx aggiungono i criteri di esecuzione dello script di attivazione ai nodi Configurazione computer e configurazione utente in criteri di gruppo editor nei percorsi seguenti.

Per Windows XP e Windows Server 2003:

Amministrativi\componenti di Windows\windows di amministrazione-PowerShell

Per Windows Vista e versioni successive di Windows:

Templates\Classic amministrativo Modelli amministrativi
PowerShell per Windows Windows\windows

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

Per altre informazioni, vedere Informazioni sulle impostazioni di Criteri di gruppo.

Precedenza dei criteri di esecuzione

Quando si determinano i criteri di esecuzione validi per una sessione, PowerShell valuta i criteri di esecuzione nel seguente ordine di precedenza:

  • Criteri di gruppo: MachinePolicy
  • Criteri di gruppo: UserPolicy
  • Criteri di esecuzione: processo (o powershell.exe -ExecutionPolicy )
  • Criteri di esecuzione: CurrentUser
  • Criteri di esecuzione: LocalMachine

Gestisci script firmati e non firmati

Se il criterio di esecuzione di PowerShell è RemoteSigned, PowerShell non esegue gli script non firmati che vengono scaricati da Internet che includono programmi di posta elettronica e messaggistica immediata.

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

A partire da PowerShell 3,0, è possibile usare il parametro Stream del Get-Item cmdlet per rilevare i file bloccati perché sono stati scaricati da Internet. Usare il Unblock-File cmdlet per sbloccare gli script in modo che sia possibile eseguirli in PowerShell.

Per ulteriori informazioni, vedere about_Signing, Get-Iteme Unblock-file.

Vedere anche

about_Environment_Variables

about_Group_Policy_Settings

about_Signing

Get-ExecutionPolicy

Get-Item

Guida della riga di comando PowerShell.exe

Set-ExecutionPolicy

Unblock-File