Dela via


SQL Server PowerShell-problem när RemoteSigned inte har angetts i domänkontrollanten för SQL Server

Den här artikeln hjälper dig att lösa problemet som uppstår när datorprincipen för domänkontrollanten inte är inställd på RemoteSigned av GPO för SQL Server.

Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 2995870

Symptom

När du öppnar SQL Server PowerShell-konsolen för Microsoft SQL Server 2012 eller Microsoft SQL Server 2014 och datorprincipen för domänkontrollanten inte är inställd på RemoteSigned av grupprincip Object (GPO) kan du få följande felmeddelande:

set-executionpolicy: Windows PowerShell har uppdaterat körningsprincipen, men inställningen åsidosätts av en princip som definierats i ett mer specifikt omfång. På grund av åsidosättningen behåller gränssnittet den aktuella gällande körningsprincipen Obegränsad. Skriv Get-ExecutionPolicy -List för att visa dina inställningar för körningsprinciper.
Mer information finns i
"Get-Help Set-ExecutionPolicy".
På rad:1 tecken:1
+ set-executionpolicy RemoteSigned -scope process -Force

Dessutom syspolicy_purge_history misslyckas jobbet i det tredje steget om domänkontrollanten inte är inställd på RemoteSigned av GPO, och du kan få följande felmeddelande:

Körs som användare: AJ\devARsqlagt. Ett jobbsteg fick ett fel på rad 1 i ett PowerShell-skript. Motsvarande rad är "set-executionpolicy RemoteSigned -scope process -Force". Korrigera skriptet och schemalägg jobbet igen. Felinformationen som returneras av PowerShell är: "Säkerhetsfel. '. Processavslutskod -1. Det gick inte att utföra åtgärden.

Orsak

Det här problemet beror på att datorprincipen inte är inställd på RemoteSigned av GPO och den skickas till medlemsservrarna. Om till exempel körningsprincipen för konfigurationen av domänkontrollanten är följande:

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

MachinePolicy har företräde framför alla andra principer.

grupprincip skickas från domänkontrollanten till de medlemsservrar som är associerade för den grupprincip. Detta ställer in MachinePolicy till Obegränsat läge och SQL Server PowerShell försöker köra med RemoteSigned körningsprincip. Därför uppstår en konfliktsituation och jobbet syspolicy_purge_history misslyckas. Samma jobb körs i SQL Server oavsett datorprincip i domänkontrollanten.

Lösning

Som ett säkerhetsmått startar SQL Server 2012 SQL PowerShell i RemoteSigned-principen. Detta gör att jobbet misslyckas och det tidigare problemet uppstår.

Obegränsad rekommenderas definitivt inte ur ett säkerhetsperspektiv eftersom det innebär Inga begränsningar. Det är anledningen till att PowerShell-skript körs när MachinePolicy har angetts som RemoteSigned i domänkontrollanten när du startar från SQL 2012.

Använd någon av följande metoder för att lösa problemet:

  • Ange inte datorprincipen för domänkontrollant av grupprincipobjektet. Om den är odefinierad innebär det att nästa nivåprincip (till exempel UserPolicy, sedan Process, sedan CurrentUser och slutligen LocalMachine) har företräde.

  • Skapa en ny organisationsenhet (OU) i Active Directory - användare och datorer och länka den här organisationsenheten till din grupprincip. Aktivera den sedan för RemoteSigned-principen. För att göra detta följer du stegen nedan:

    1. Gå till Active Directory - användare och datorer.

    2. Högerklicka på din domän ->Ny ->Organisationsenhet för att skapa en ny organisationsenhet.

    3. Skriv gpmc.msc i Kör och högerklicka sedan på grupprincip Object ->New för att skapa ett nytt grupprincipobjekt.

    4. Högerklicka på det nyligen skapade grupprincipobjektet ->Edit. Ett nytt fönster öppnas.

    5. Gå till Datorkonfiguration ->Principer ->Administrativa mallar ->Windows-komponenter ->Windows PowerShell -> dubbelklicka på Aktivera skriptkörning.

    6. Ange körningsprincipen till Tillåt lokala skript och fjärrsignerade skript.

    7. Klicka först på Använd och sedan på OK.

    8. Gå till Active Directory - användare och datorer och klicka sedan på Datorer. Du hittar en lista över datorer för domänen. Högerklicka på de datorer som du vill flytta i den nyligen skapade organisationsenheten. På så sätt kan du flytta en enskild dator eller en grupp datorer till en organisationsenhet.

    9. Gå till grupprincip Management, högerklicka på den nyligen skapade organisationsenheten, klicka på Länka ett befintligt grupprincipobjekt, välj det nyligen skapade grupprincipobjektet och klicka sedan på OK.

    10. Uppdatera principen på domänkontrollanten och på klientdatorn genom att köra det här kommandot i PowerShell.

      gpupdate /force
      
    11. Kontrollera datorprincipen för organisationsenhet och klientkomponent. Den bör vara RemoteSigned.

Referenser

Om körningsprinciper