Freigeben über


SQL Server PowerShell-Problem, wenn RemoteSigned nicht im Domänencontroller für SQL Server festgelegt ist

Dieser Artikel hilft Ihnen, das Problem zu beheben, das auftritt, wenn die Computerrichtlinie des Domänencontrollers nicht auf "RemoteSigned by GPO für SQL Server" festgelegt ist.

Ursprüngliche Produktversion: SQL Server
Ursprüngliche KB-Nummer: 2995870

Problembeschreibung

Wenn Sie die SQL Server PowerShell-Konsole von Microsoft SQL Server 2012 oder Microsoft SQL Server 2014 öffnen und die Computerrichtlinie des Domänencontrollers nicht auf RemoteSigned by Group Policy Object (GPO) festgelegt ist, wird möglicherweise die folgende Fehlermeldung angezeigt:

set-executionpolicy: Windows PowerShell hat Ihre Ausführungsrichtlinie erfolgreich aktualisiert, die Einstellung wird jedoch von einer Richtlinie außer Kraft gesetzt, die auf einem spezifischeren Bereich definiert ist. Aufgrund der Außerkraftsetzung behält Ihre Shell die aktuelle effektive Ausführungsrichtlinie "Uneingeschränkt" bei. Geben Sie "Get-ExecutionPolicy -List" ein, um Die Ausführungsrichtlinieneinstellungen anzuzeigen.
Weitere Informationen finden Sie unter
"Get-Help Set-ExecutionPolicy".
Zeile:1 Zeichen:1
+ set-executionpolicy RemoteSigned -scope process -Force

Darüber hinaus schlägt der Auftrag im dritten Schritt fehl, syspolicy_purge_history wenn der Domänencontroller nicht auf "RemoteSigned by GPO" festgelegt ist, und Sie erhalten möglicherweise die folgende Fehlermeldung:

Wird als Benutzer ausgeführt: AJ\devARsqlagt. Fehler bei einem Auftragsschritt in Zeile 1 in einem PowerShell-Skript. Die entsprechende Zeile lautet "set-executionpolicy RemoteSigned -scope process -force". Korrigieren Sie das Skript, und planen Sie den Auftrag neu. Die von PowerShell zurückgegebenen Fehlerinformationen sind: 'Sicherheitsfehler. '. Prozessausgangscode -1. Fehler bei Schritt.

Ursache

Dieses Problem tritt auf, da die Computerrichtlinie nicht auf "RemoteSigned by GPO" festgelegt ist und an die Memberserver übertragen wird. Wenn die Ausführungsrichtlinie für das Domänencontrollersetup z. B. wie folgt lautet:

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

MachinePolicy hat Vorrang vor allen anderen Richtlinien.

Gruppenrichtlinien werden vom Domänencontroller an die Mitgliedsserver übertragen, die dieser Gruppenrichtlinie zugeordnet sind. Dadurch wird der MachinePolicy uneingeschränkte Modus festgelegt, und SQL Server PowerShell versucht, mit RemoteSigned ausführungsrichtlinie auszuführen. Daher tritt eine widersprüchliche Situation auf und der syspolicy_purge_history Auftrag schlägt fehl. Derselbe Auftrag wird unabhängig von der Computerrichtlinie im Domänencontroller erfolgreich in SQL Server ausgeführt.

Problemumgehung

Als Sicherheitsmaßnahme startet SQL Server 2012 SQL PowerShell in der RemoteSigned-Richtlinie. Dies führt dazu, dass der Auftrag fehlschlägt und das vorherige Problem auftritt.

Uneingeschränkt wird aus Sicherheitsgründen definitiv nicht empfohlen, da es keine Einschränkungen bedeutet. Wenn Sie mit SQL 2012 beginnen, werden PowerShell-Skripts erfolgreich ausgeführt, wenn MachinePolicy als RemoteSigned im Domänencontroller festgelegt wird.

Wenden Sie eine der folgenden Methoden an, um dieses Problem zu umgehen:

  • Legen Sie die Computerrichtlinie des Domänencontrollers nicht durch GPO fest. Wenn sie nicht definiert ist, bedeutet dies, dass die richtlinie der nächsten Ebene (z. B. UserPolicy, dann Process, dann CurrentUser und zuletzt LocalMachine) Vorrang hat.

  • Erstellen Sie in Active Directory-Benutzer und -Computer eine neue Organisationseinheit (OU), und verknüpfen Sie diese OU mit Ihrer Gruppenrichtlinie. Aktivieren Sie sie dann für die RemoteSigned-Richtlinie. Gehen Sie dazu wie folgt vor:

    1. Wechseln Sie zu Active Directory-Benutzer und -Computer.

    2. Klicken Sie mit der rechten Maustaste auf Ihre Domäne ->Neu ->Organisationseinheit , um eine neue Organisationseinheit zu erstellen.

    3. Geben Sie "gpmc.msc" in "Ausführen" ein, und klicken Sie dann mit der rechten Maustaste auf "Gruppenrichtlinienobjekt ->Neu", um ein neues Gruppenrichtlinienobjekt zu erstellen.

    4. Klicken Sie mit der rechten Maustaste auf das neu erstellte Gruppenrichtlinienobjekt ->Edit. Es wird ein neues Fenster geöffnet.

    5. Wechseln Sie zu Computerkonfiguration -Richtlinien ->Administrative Vorlagen ->>Windows-Komponenten ->Windows PowerShell -> doppelklicken Sie auf Skriptausführung aktivieren.

    6. Legen Sie die Ausführungsrichtlinie auf lokale Skripts und remotesignierte Skripts fest.

    7. Klicken Sie auf Übernehmen und anschließend auf OK.

    8. Wechseln Sie zu Active Directory-Benutzer und -Computer, und klicken Sie dann auf "Computer". Sie finden eine Liste der Computer für die Domäne. Klicken Sie mit der rechten Maustaste auf die Computer, die Sie in der neu erstellten Organisationseinheit verschieben möchten. Auf diese Weise können Sie eine einzelne oder eine Gruppe von Computern in eine Organisationseinheit verschieben.

    9. Wechseln Sie zur Gruppenrichtlinienverwaltung, klicken Sie mit der rechten Maustaste auf neu erstellte Organisationseinheit, klicken Sie auf "Vorhandenes Gruppenrichtlinienobjekt verknüpfen", wählen Sie das neu erstellte Gruppenrichtlinienobjekt aus, und klicken Sie dann auf "OK".

    10. Aktualisieren Sie die Richtlinie auf dem Domänencontroller und auf dem Clientcomputer, indem Sie diesen Befehl in PowerShell ausführen.

      gpupdate /force
      
    11. Überprüfen Sie die Computerrichtlinie für die Organisationseinheit und die Clientkomponente, es sollte RemoteSigned sein.

References

Informationen zu Ausführungsrichtlinien