Twój profil VPN jest w Ustawieniach, a zaplanowane zadanie nadal zgłasza, że nie może znaleźć połączenia. Nic nie jest uszkodzone: natywny magazyn VPN systemu Windows jest przypisany do użytkownika, chyba że profil utworzono dla wszystkich użytkowników, a zadanie działa jako konto wskazane przez jego principal. Zwykle zadanie czyta książkę telefoniczną, która nigdy nie zawierała Twojego profilu. Dwie komendy i jedno ustawienie zadania wystarczą, aby to udowodnić, i warto je uruchomić, zanim ktokolwiek odtworzy połączenie.

Dwa magazyny przechowują tę samą nazwę profilu

Natywny profil VPN systemu Windows żyje w magazynie konta, które go utworzyło. Magazyn globalny to inna książka telefoniczna, który wypełnia się tylko wtedy, gdy profil zostanie utworzony z przełącznikiem dla wszystkich użytkowników w sesji podniesionej. Oba mogą przechowywać profil o tej samej nazwie i żaden nie jest widokiem drugiego.

Odczytaj oba magazyny z tej samej sesji i porównaj nazwy, które zwracają. Przełącznik wybiera magazyn globalny, a jego odczyt zwykle wymaga sesji podniesionej:

Get-VpnConnection | Select-Object Name, ServerAddress, TunnelType
Get-VpnConnection -AllUserConnection | Select-Object Name, ServerAddress, TunnelType

Jeśli pierwsza komenda wymienia profil, a druga nie, żadna zmiana poświadczeń nie pomoże zadaniu działającemu na innym koncie, ponieważ problemem jest członkostwo, a nie uwierzytelnianie. Jeśli oba go wymieniają, magazyn nie jest przyczyną i obowiązuje następna sekcja. To jedno porównanie zamyka połowę takich zgłoszeń. Zapisz, który magazyn odpowiedział i na którym koncie uruchomiłeś sprawdzenie, bo odpowiedź bez obu faktów nic nie znaczy.

Odczytaj principal zadania przed jego poświadczeniami

Otwórz zadanie i odczytaj principal, bo mówi on, który magazyn zadanie widzi. Zadanie ustawione do działania jako SYSTEM nie jest Twoim kontem z dodatkowymi uprawnieniami: ma własny profil i nie ma dostępu do książki telefonicznej poszczególnych użytkowników, którą utworzyłeś, będąc zalogowanym. Konto usługi zachowuje się dokładnie tak samo.

Opcja uruchamiania niezależnie od tego, czy jesteś zalogowany, też to zmienia, bo wtedy zadanie nie ma sesji interaktywnej, z której mogłoby pożyczyć poświadczenia. Niech akcja zapisze whoami do pliku, a odpowiedź odczytaj zamiast jej zakładać.

Diagnostyka z Twojego terminala nic nie mówi o tym problemie, bo pokazuje to, co widzi Twoje konto. Uruchom porównanie pod tożsamością zadania za pomocą dowolnej zatwierdzonej procedury, którą masz do tego. Dane wklejone z konsoli administratora to inny zestaw danych, nie bardziej uprzywilejowany. Jeśli taka procedura nie istnieje, zadanie musi samo zapisać odpowiedź, co przygotowuje ostatnia sekcja.

Znalezienie profilu nie jest zalogowaniem

Profil dla wszystkich użytkowników czyni konfigurację szerzej widoczną. Nie przenosi zapisanego hasła z konta, które go utworzyło, i nie przekazuje innemu kontu klucza prywatnego przechowywanego w Twoim profilu użytkownika. Widoczność i użyteczne poświadczenia to dwa osobne testy, a przejście pierwszego nic nie mówi o drugim.

Jeśli zadanie teraz znajduje profil i nie przechodzi uwierzytelniania, to postęp i ten etap należy do rejestru. Przenieś certyfikat do magazynu komputera albo dostarcz sekret przez własny mechanizm wdrożenia, zamiast ponownie tworzyć nazwę połączenia. Ponowne utworzenie daje ten sam błąd z nowszą sygnaturą czasu. Microsoft dokumentuje dwa zakresy , między którymi wybiera przełącznik cmdlet.

Wyzwania nieinteraktywne to pułapka za tym etapem. Monit o PIN lub kod jednorazowy nie może zostać obsłużony przez zadanie bez pulpitu, więc profil, który ręcznie łączy się bezbłędnie, może być bezużyteczny w automatyzacji.

Cztery pola, których potrzebuje rejestr zadania

Trzymaj razem w jednym miejscu wartości, które decydują o wyniku, bo trzy z nich zwykle pozostają niejawne. Rejestr potrzebuje czterech wierszy:

  • Ścieżka akcji: skrypt lub plik wykonywalny uruchamiany przez zadanie, a nie skrót, który dla innego konta rozwiązuje się inaczej.
  • Nazwa profilu: dokładny ciąg, bo dwa magazyny mogą przechowywać tę samą nazwę wskazującą na różne serwery.
  • Principal: konto, na którym działa zadanie, oraz czy ma sesję interaktywną.
  • Metoda uwierzytelniania: co ten principal naprawdę może ukończyć, na przykład certyfikat z magazynu komputera zamiast klucza w Twoim profilu użytkownika.

Te cztery wiersze odpowiadają na pytanie, które zgłoszenie naprawdę zadaje, czyli jakiej konfiguracji użyła automatyzacja. Przetrwają też następną przebudowę zadania, gdy pierwotny autor nie jest obok, by wyjaśnić, dlaczego nazwa miała znaczenie. Bez nich ten sam błąd wraca po następnym wdrożeniu i znowu kosztuje te same godziny.

Ustal etap, do którego doszło zadanie

Instrumentuj akcję zamiast zgadywać z wyniku ostatniego uruchomienia. Krótka otoczka zapisuje w jednym miejscu tożsamość, widoczny magazyn i wynik połączenia:

whoami
Get-VpnConnection -AllUserConnection | Select-Object Name, ServerAddress
rasdial "Office"
schtasks /query /tn "VPN Connect" /v /fo LIST

Komenda połączenia drukuje własny błąd, który zwykle jest jaśniejszy niż ogólny błąd zadania. Zapytanie zwraca principal i ostatni kod wyniku obok siebie, więc tożsamość i wynik są widoczne w jednym widoku. Te dwa fakty decydują, czy następnym krokiem jest zmiana magazynu, czy zmiana poświadczeń.

Na koniec odróżnij zadanie łączące się po zalogowaniu użytkownika od tunelu urządzenia lub obsługiwanego przepływu pracy przed logowaniem. Współdzielenie jednego profilu nie jest projektem dla żadnego z nich, a pole principal mówi, który z trzech przypadków zbudowałeś. Jeśli łączność musi istnieć przed logowaniem, magazyn profili poszczególnych użytkowników to niewłaściwa warstwa do naprawy.

Powiązane artykuły