Zoeken…


Opmerkingen

Door een script te ondertekenen, voldoen uw scripts aan alle uitscheidingsbeleid in PowerShell en wordt de integriteit van een script gewaarborgd. Ondertekende scripts kunnen niet worden uitgevoerd als ze zijn gewijzigd nadat ze zijn ondertekend.

Ondertekening van scripts vereist een certificaat voor ondertekening van code. aanbevelingen:

  • Persoonlijke scripts / testen (niet gedeeld): certificaat van vertrouwde certificeringsinstantie (intern of van derden) OF een zelfondertekend certificaat.
  • Gedeeld binnen organisatie: certificaat van vertrouwde gecertificeerde autoriteit (intern of derde partij)
  • Gedeelde externe organisatie: certificaat van vertrouwde externe certificeringsinstantie

Lees meer op about_Signing @ TechNet

Uitvoeringsbeleid

PowerShell heeft configureerbaar uitvoeringsbeleid dat bepaalt welke voorwaarden vereist zijn om een script of configuratie uit te voeren. Een uitzonderingsbeleid kan worden ingesteld voor meerdere scopes; computer, huidige gebruiker en huidig proces. Het uitvoeringsbeleid kan eenvoudig worden omzeild en is niet bedoeld om gebruikers te beperken, maar beschermt hen tegen onbedoeld overtreden van het ondertekeningsbeleid.

Het beschikbare beleid is:

omgeving Beschrijving
Beperkt Geen scripts toegestaan
AllSigned Alle scripts moeten worden ondertekend
RemoteSigned Alle lokale scripts toegestaan; alleen ondertekende externe scripts
onbeperkt Geen vereisten. Alle scripts toegestaan, maar waarschuwen voordat scripts worden uitgevoerd die zijn gedownload van internet
bypass Alle scripts zijn toegestaan en er worden geen waarschuwingen weergegeven
onbepaald Verwijder het huidige uitvoeringsbeleid voor het huidige bereik. Gebruikt het bovenliggende beleid. Als alle beleidsregels niet zijn gedefinieerd, wordt beperkt gebruikt.

U kunt het huidige uitvoeringsbeleid wijzigen met Set-ExecutionPolicy -cmdlet, Groepsbeleid of de parameter -ExecutionPolicy wanneer u een powershell.exe proces start.

Lees meer op about_Execution_Policies @ TechNet

Een script ondertekenen

Het ondertekenen van een script gebeurt met behulp van de Set-AuthenticodeSignature -cmdlet en een code-signing-certificaat.

#Get the first available personal code-signing certificate for the logged on user
$cert = @(Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert)[0]
    
#Sign script using certificate
Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1

Je kunt ook een certificaat uit een .pfx -bestand lezen met:

$cert = Get-PfxCertificate -FilePath "C:\MyCodeSigningCert.pfx"

Het script is geldig totdat het cetificaat verloopt. Als u tijdens de ondertekening een tijdstempel-server gebruikt, blijft het script geldig nadat het certificaat is verlopen. Het is ook nuttig om de vertrouwensketen voor het certificaat (inclusief root-autoriteit) toe te voegen om de meeste computers te helpen vertrouwen op het certificaat dat is gebruikt om het script te ondertekenen.

Set-AuthenticodeSignature -Certificate $cert -FilePath c:\MyScript.ps1 -IncludeChain All -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll"

Het wordt aanbevolen om een tijdstempel-server te gebruiken van een vertrouwde certificaataanbieder zoals Verisign, Comodo, Thawte etc.

Het uitvoeringsbeleid wijzigen met Set-ExecutionPolicy

Gebruik het volgende om het uitvoeringsbeleid voor het standaardbereik (LocalMachine) te wijzigen:

Set-ExecutionPolicy AllSigned

Gebruik het volgende om het beleid voor een specifiek bereik te wijzigen:

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy AllSigned

U kunt de aanwijzingen onderdrukken door de schakelaar -Force toe te voegen.

Het uitvoeringsbeleid omzeilen voor een enkel script

Vaak moet u een niet-ondertekend script uitvoeren dat niet voldoet aan het huidige uitvoeringsbeleid. Een eenvoudige manier om dit te doen is door het uitvoeringsbeleid voor dat ene proces te omzeilen. Voorbeeld:

powershell.exe -ExecutionPolicy Bypass -File C:\MyUnsignedScript.ps1

Of u kunt de afkorting gebruiken:

powershell -ep Bypass C:\MyUnsignedScript.ps1

Ander uitvoeringsbeleid:

Het beleid Beschrijving
AllSigned Alleen scripts ondertekend door een vertrouwde uitgever kunnen worden uitgevoerd.
Bypass Geen beperkingen; alle Windows PowerShell-scripts kunnen worden uitgevoerd.
Default Normaal RemoteSigned , maar wordt bestuurd via ActiveDirectory
RemoteSigned Gedownloade scripts moeten zijn ondertekend door een vertrouwde uitgever voordat ze kunnen worden uitgevoerd.
Restricted Er kunnen geen scripts worden uitgevoerd. Windows PowerShell kan alleen in de interactieve modus worden gebruikt.
Undefined NA
Unrestricted * Gelijk aan bypass

Unrestricted* Waarschuwing: als u een niet-ondertekend script uitvoert dat is gedownload van internet, wordt u om toestemming gevraagd voordat het wordt uitgevoerd.


Meer informatie hier beschikbaar.

Download het huidige uitvoeringsbeleid

Het effectieve uitvoeringsbeleid voor de huidige sessie verkrijgen:

PS> Get-ExecutionPolicy
RemoteSigned

Lijst alle effectieve uitvoeringsbeleidslijnen voor de huidige sessie:

PS> Get-ExecutionPolicy -List

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

Maak een lijst van het uitvoeringsbeleid voor een specifiek bereik, bijv. werkwijze:

PS> Get-ExecutionPolicy -Scope Process
Undefined

De handtekening verkrijgen van een ondertekend script

Krijg informatie over de Authenticode-handtekening van een ondertekend script met behulp van de Get-AuthenticodeSignature -cmdlet:

Get-AuthenticodeSignature .\MyScript.ps1 | Format-List *

Een zelfondertekend certificaat voor het ondertekenen van codes maken voor testen

Bij het ondertekenen van persoonlijke scripts of bij het testen van code-ondertekening kan het handig zijn om een zelf-ondertekend code-handtekeningcertificaat te maken.

5.0

Vanaf PowerShell 5.0 kunt u een zelfondertekend certificaat voor het ondertekenen van codes genereren met behulp van het New-SelfSignedCertificate -cmdlet:

New-SelfSignedCertificate -FriendlyName "StackOverflow Example Code Signing" -CertStoreLocation Cert:\CurrentUser\My -Subject "SO User" -Type CodeSigningCert

In eerdere versies kunt u een zelfondertekend certificaat maken met het hulpmiddel makecert.exe in de .NET Framework SDK en Windows SDK.

Een zelfondertekend certificaat wordt alleen vertrouwd door computers die het certificaat hebben geïnstalleerd. Voor scripts die worden gedeeld, wordt een certificaat van een vertrouwde certificeringsinstantie (interne of vertrouwde derde partij) aanbevolen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow