Udostępnij przez


Problem z programem SQL Server PowerShell, gdy właściwość RemoteSigned nie jest ustawiona na kontrolerze domeny dla programu SQL Server

Ten artykuł ułatwia rozwiązanie problemu występującego, gdy zasady komputera kontrolera domeny nie są ustawione na RemoteSigned przez obiekt zasad grupy dla programu SQL Server.

Oryginalna wersja produktu: SQL Server
Oryginalny numer KB: 2995870

Symptomy

Po otwarciu konsoli programu SQL Server PowerShell programu Microsoft SQL Server 2012 lub Microsoft SQL Server 2014 i zasady komputera kontrolera domeny nie są ustawione na RemoteSigned przez obiekt zasad grupy (GPO), może zostać wyświetlony następujący komunikat o błędzie:

set-executionpolicy: program Windows PowerShell zaktualizował zasady wykonywania pomyślnie, ale ustawienie jest zastępowane przez zasady zdefiniowane w bardziej szczegółowym zakresie. Ze względu na przesłonięcia powłoka zachowa bieżące obowiązujące zasady wykonywania unrestricted. Wpisz Get-ExecutionPolicy -List , aby wyświetlić ustawienia zasad wykonywania.
Aby uzyskać więcej informacji, zobacz
"Get-Help Set-ExecutionPolicy".
W wierszu:1 char:1
+ set-executionpolicy RemoteSigned -scope process -Force

Ponadto zadanie kończy się niepowodzeniem w trzecim kroku, syspolicy_purge_history jeśli kontroler domeny nie jest ustawiony na RemoteSigned przez obiekt zasad grupy i może zostać wyświetlony następujący komunikat o błędzie:

Wykonane jako użytkownik: AJ\devARsqlagt. Krok zadania odebrał błąd w wierszu 1 skryptu programu PowerShell. Odpowiedni wiersz to "set-executionpolicy RemoteSigned -scope process -Force". Popraw skrypt i zmień harmonogram zadania. Informacje o błędzie zwrócone przez program PowerShell to: "Błąd zabezpieczeń. '. Kod zakończenia procesu -1. Wykonanie kroku nie powiodło się.

Przyczyna

Ten problem występuje, ponieważ zasady maszyny nie są ustawione na RemoteSigned przez obiekt zasad grupy i są wypychane do serwerów członkowskich. Jeśli na przykład zasady wykonywania dla konfiguracji kontrolera domeny są następujące:

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

Zasada MachinePolicy ma pierwszeństwo przed wszystkimi innymi zasadami.

Zasady grupy są wypychane z kontrolera domeny do serwerów członkowskich skojarzonych dla tych zasad grupy. Spowoduje to ustawienie MachinePolicy trybu Bez ograniczeń , a program SQL Server PowerShell próbuje uruchomić z zasadami RemoteSigned wykonywania. W związku z tym występuje sytuacja powodująca konflikt i zadanie kończy się niepowodzeniem syspolicy_purge_history . To samo zadanie działa pomyślnie w programie SQL Server niezależnie od zasad komputera w kontrolerze domeny.

Rozwiązanie

W ramach miary zabezpieczeń program SQL Server 2012 uruchamia program SQL PowerShell w zasadach RemoteSigned. Powoduje to niepowodzenie zadania, a poprzedni problem występuje.

Bez ograniczeń zdecydowanie nie jest zalecane z punktu widzenia zabezpieczeń, ponieważ oznacza to brak ograniczeń. Jest to powód, dla którego rozpoczynasz pracę od programu SQL 2012, skrypty programu PowerShell są uruchamiane pomyślnie, gdy właściwość MachinePolicy jest ustawiona jako RemoteSigned w kontrolerze domeny.

Aby obejść ten problem, użyj jednej z następujących metod:

  • Nie należy ustawiać zasad komputera kontrolera domeny przez obiekt zasad grupy. Jeśli jest on niezdefiniowany, oznacza to, że pierwszeństwo będą miały zasady następnego poziomu (na przykład UserPolicy, Process, CurrentUser i w końcu LocalMachine).

  • Utwórz nową jednostkę organizacyjną w Użytkownicy i komputery usługi Active Directory i połącz tę jednostkę organizacyjną z zasadami grupy. Następnie włącz je dla zasad RemoteSigned. W tym celu wykonaj następujące kroki:

    1. Przejdź do Użytkownicy i komputery usługi Active Directory.

    2. Kliknij prawym przyciskiem myszy domenę ->Nowy ->Jednostka organizacyjna, aby utworzyć nową jednostkę organizacyjną.

    3. Wpisz gpmc.msc w uruchom, a następnie kliknij prawym przyciskiem myszy obiekt zasad grupy ->Nowy, aby utworzyć nowy obiekt zasad grupy.

    4. Kliknij prawym przyciskiem myszy nowo utworzony obiekt zasad grupy ->Edit. Zostanie otwarte nowe okno.

    5. Przejdź do pozycji Konfiguracja komputera ->Zasady ->Szablony administracyjne ->Składniki systemu Windows ->Windows PowerShell -> kliknij dwukrotnie pozycję Włącz wykonywanie skryptu.

    6. Ustaw zasady wykonywania na Zezwalaj na skrypty lokalne i skrypty podpisane zdalnie.

    7. Kliknij Zastosuj a następnie kliknij OK.

    8. Przejdź do Użytkownicy i komputery usługi Active Directory, a następnie kliknij pozycję Komputery. Znajduje się lista komputerów dla domeny. Kliknij prawym przyciskiem myszy komputery, które chcesz przenieść w nowo utworzonej jednostce organizacyjnej. W ten sposób można przenieść pojedynczą lub grupę komputerów do jednostki organizacyjnej.

    9. Przejdź do obszaru Zarządzanie zasadami grupy, kliknij prawym przyciskiem myszy nowo utworzoną jednostkę organizacyjną, kliknij pozycję Połącz istniejący obiekt zasad grupy, wybierz nowo utworzony obiekt zasad grupy, a następnie kliknij przycisk OK.

    10. Zaktualizuj zasady na kontrolerze domeny i na komputerze klienckim, uruchamiając to polecenie w programie PowerShell.

      gpupdate /force
      
    11. Sprawdź zasady maszyny dla jednostki organizacyjnej i składnika klienta, które powinny być remoteSigned.

Informacje

Informacje o zasadach wykonywania