De PowerShell is geen digitaal ondertekende fout die vaak wordt geactiveerd terwijl gebruikers PowerShell-scripts uitvoeren. Het gebeurt meestal als gevolg van de waarden die zijn ingesteld voor de PowerShell uitvoering beleid.
als onderdeel van onze Serverbeheerdiensten helpen we onze klanten om windows-gerelateerde fouten regelmatig op te lossen.
laten we vandaag de mogelijke oorzaken en oplossingen voor deze fout bespreken.
Wat is PowerShell is niet digitaal ondertekend?
tijdens het uitvoeren van een PowerShell-script dat niet is ondertekend door een vertrouwde uitgever, zien gebruikers vaak een beveiligingsfout “PowerShell is niet digitaal ondertekend” zoals hieronder weergegeven:
deze beveiligingsfout kan optreden wanneer we een uitvoerbeleid voor PowerShell met AllSigned of RemoteSigned hebben.
laten we nu enkele mogelijke methoden bespreken om deze fout op te lossen.
hoe te repareren PowerShell is geen digitaal ondertekende fout?
er zijn een paar mogelijke methoden om deze fout op te lossen. Laten we ze één voor één bekijken.
uitvoerbeleid controleren en wijzigen
de eerste stap hier is om het uitvoerbeleid te controleren. We kunnen Get-ExecutionPolicy cmdlet uitvoeren om het uitvoeringsbeleid te krijgen. De parameter list in de cmdlet Get-ExecutionPolicy vertelt ons het beleid voor elke scope.
PS C:\> Get-ExecutionPolicy -list
zodra we een idee hebben van het uitvoerbeleid, is de makkelijkste maar onzekere methode om van deze foutmelding af te komen het wijzigen van het uitvoerbeleid naar onbeperkt.
verder kunnen we het uitvoerbeleid wijzigen met behulp van de cmdlet SetExecutionPolicy. Het volgende commando stelt het uitvoerbeleid in op onbeperkt:
PS C:> Set-ExecutionPolicy unrestricted.
druk op Y om de wijziging te bevestigen wanneer daarom wordt gevraagd.
Het werkt vervolgens de beleidswijziging in het register bij en blijft zo totdat we het opnieuw wijzigen
omzeilen de huidige PowerShell-sessie
om het uitvoerbeleid tijdelijk te wijzigen, kunnen we Set-ExecutionPolicy cmdlet met ByPass-instelling gebruiken.
Set-ExecutionPolicy -Scope Process -ExecutionPolicy ByPass
Dit eenvoudige commando hierboven stelt het uitvoerbeleid in om de huidige PowerShell-sessie te omzeilen. Zodra we deze PowerShell sessie sluiten, verliest het deze instellingen.
aanvaardbare waarden voor Uitvoerpolicyparameter
Hieronder is het detail van de aanvaardbare waarden voor Uitvoerpolicyparameter:
- beperkt. Laadt geen configuratiebestanden of voert geen scripts uit. Beperkt is het standaarduitvoerbeleid.
- AllSigned. Vereist dat een vertrouwde uitgever alle scripts en configuratiebestanden ondertekent, inclusief scripts die we op de lokale computer schrijven.
- RemoteSigned. Vereist dat een vertrouwde uitgever alle scripts en configuratiebestanden die zijn gedownload van het Internet ondertekent.
- onbeperkt. Laadt alle configuratiebestanden en voert alle scripts uit. Vraagt om toestemming als we een niet ondertekend script downloaden van het Internet.
- Bypass. Zal niets blokkeren en er zijn geen waarschuwingen of aanwijzingen.
- ongedefinieerd. Hiermee verwijdert u het momenteel toegewezen uitvoerbeleid uit het huidige bereik. Met deze parameter wordt een uitvoerbeleid dat is ingesteld in een Groepsbeleidsbereik niet verwijderd.
De standaard scope voor het commando Set-ExecutionPolicy is LocalMachine. We kunnen ook de scope voor beleid specificeren door de parameter-Scope toe te voegen. Bijvoorbeeld, sommige scopes die we kunnen instellen zijn:
- proces: het uitvoerbeleid beïnvloedt alleen het huidige PowerShell proces.
- CurrentUser: het uitvoerbeleid beïnvloedt alleen de huidige gebruiker.
- LocalMachine: het uitvoerbeleid is van invloed op alle gebruikers van de computer.
om een uitvoerbeleid uit een bepaald bereik te verwijderen, stelt u het uitvoerbeleid voor dat bereik in op ongedefinieerd.
Deblokkeer het gedownloade bestand
voor RemoteSignedExecution Policy moet u alle scripts en configuratiebestanden ondertekenen die zijn gedownload van het Internet of Van e-mails van een vertrouwde uitgever.
als we vertrouwen dat de inhoud van het script veilig is, dan kunnen we het deblokkeren om op de sessie te draaien met behulp van de cmdlet deblokkeren-bestand:
PS C:> Unblock-File -Path C:Downloadsscript1.ps1
conclusie
kortom, PowerShell is niet digitaal ondertekend beveiligingsfout kan optreden wanneer het uitvoerbeleid van PowerShell is ingesteld op AllSigned of RemoteSigned. Vandaag zagen we hoe onze Support Engineers deze fout oplossen.