Windows Powershell ExecutionPolicy

Het configureren van servers en werkstations is een tijdrovende klus, met Windows Powershell kunnen veel handelingen worden geautomatiseerd middels scripts. Bij het uitvoeren van scripts wordt er door Powershell een controle uitgevoerd of het script wel uitgevoerd mag worden. POwershell kijkt of het script is voorzien van een een self-signed certificaat of van een certificaat uitgegeven door een certificaatautoriteit. De uitkomst wordt vergeleken met de ExecutionPolicy. Wanneer de ExecutionPolicy bepaald dat het script niet mag worden uitgevoerd, wordt de onderstaande melding weergegeven:

File C:\Users\WindowsTechBlog\Desktop\test.ps1 cannot be loaded because the execution of scripts is disabled on this system. Please see "get-help about_signing" for more details.
At line:1 char:17
+ .\test.ps1 <<<<
    + CategoryInfo          : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException

Powershell ExecutionPolicy

De ExecutionPolicy is onderdeel van de beveilingstrategie van Powershell. Het bepaald of een script wel of niet mag worden uitgevoerd. De ExecutionPolicy kent vier soorten policies:

  1. Restricted – Geen enkel script kan worden uitgevoerd. Alleen cmdlets via de console.
  2. AllSigned – Alleen scripts van een vertrouwde uitgever mogen worden uitgevoerd. 
  3. RemoteSigned – Gedownloade scripts moeten zijn voorzien van een geldig certificaat die is uitgegeven door een certificaatautoriteit mogen worden uitgevoerd.
  4. Unrestriced – Geen restricities; Alle Windows Powershell scripts mogen worden uitgevoerd.

Om te achterhalen welke ExecutionPolicy van toepassing is op een systeem, gebruik hiervoor de Get-ExecutionPolicy cmdlet:

1
Get-ExecutionPolicy

Determine Windows Powershell ExecutionPolicy Windows 10

De ExecutionPolicy kan redelijk eenvoudig worden gewijzigd via Powershell. Hiervoor moet Powershell worden geopend met Administrator rechten. De scope van de ExecutionPolicy beperkt zich alleen tot de lokale machine waar de Set-ExecutionPolicy cmdlet wordt uitgevoerd:

Set-ExecutionPolicy Unrestricted

Bovenstaande cmdlet wijizgt de ExecutionPolicy naar ‘Unrestricted’, allee Powershell scripts mogen worden uitgevoerd.

ExecutionPolicy voor remote computers.

De Administrator van een Windows-netwerk kan vanaf de server voor een enkele werkstation de ExecutionPolicy aanpassen:

Invoke-Command -ComputerName "Werkstation01" -ScriptBlock {Get-ExecutionPolicy} | Set-ExecutionPolicy -Force

ExecutionPolicy via Group Policy

Om de ExecutionPolicy integraal voor alle werkstations te wijzigen, kan dit middels de GPO worden afgedwongen. Wanneer de ExecutionPolicy vanuit de GPO geforceerd wordt aangepast op de werkstations, is het voor de gebruikers van de werkstations niet meer mogelijk om de ExecutionPolicy te wijzigen. Verder in dit artikel is hier een voorbeeld van weegegeven.

  1. Open de Group Policy (gpmc.msc)
  2. Navigeer naar Computer Configuration\Policies\Windows Components\Windows Powershell.
  3.  Open de policy Turn on Script Execution.
  4. Zet deze policy op Enable en selecteer de gewenste policy, in dit geval Allow all scripts.

Change ExecutionPolicy through GPO

Als de bovenstaande policy actief is op de server en werkstations, is het niet meer mogelijk voor de gebruiker om zelf de ExecutionPolicy te wijzigen. Wanneer de gebruiker deze toch probeert te wijzigen middels de Powershell Console, wordt de onderstaande melding weergegeven:

Set-ExecutionPolicy : Windows PowerShell updated your execution policy successfully, but the setti
ng is overridden by a policy defined at a more specific scope.  Due to the override, your shell wi
ll retain its current effective execution policy of Unrestricted. Type "Get-ExecutionPolicy -List"
 to view your execution policy settings. For more information please see "Get-Help Set-ExecutionPo
licy".
At line:1 char:1
+ Set-ExecutionPolicy Restricted
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (:) [Set-ExecutionPolicy], SecurityException
    + FullyQualifiedErrorId : ExecutionPolicyOverride,Microsoft.PowerShell.Commands.SetExecutionP
   olicyCommand

Set-ExecutionPolicy Windows Powershell updated your execution policy seccessfully

Powershell script ExecutionPolicy aanpassen

Zonder de ExecutionPolicy voor het gehele netwerk te wijzigen of voor een enkele werkstation, is het mogelijk om een bestand te ‘unblocken’ ongeacht welke ExecutionPolicy van kracht is. Dit is handig als er bijvoorbeeld eenmalig een script moet worden uitgevoerd die niet aan de policy voldoet, maar toch uitgevoerd dient te worden. Gebruik hiervoor de onderstaande cmdlet:

Unblock-File -Path "Start-ActivityTracker.ps1"

Heb je wat aan dit artikel gehad of heb je nog vragen? Laat gerust een reactie achter.

https://i1.wp.com/windowstechblog.nl/wp-content/uploads/2017/06/Windows-Powershell-ExecutionPolicy.png?fit=300%2C200&ssl=1https://i1.wp.com/windowstechblog.nl/wp-content/uploads/2017/06/Windows-Powershell-ExecutionPolicy.png?resize=150%2C150&ssl=1Martien van DijkWindows PowershellWindows Powershell ExecutionPolicy Het configureren van servers en werkstations is een tijdrovende klus, met Windows Powershell kunnen veel handelingen worden geautomatiseerd middels scripts. Bij het uitvoeren van scripts wordt er door Powershell een controle uitgevoerd of het script wel uitgevoerd mag worden. POwershell kijkt of het script is voorzien van...it's all about Microsoft