Jak napisać skrypt systemu Windows, aby zmienić ustawienia sieciowe w locie

  • William Charles
  • 0
  • 3997
  • 423
Reklama

W tym tygodniu natknąłem się na ciekawy problem. W wielu biurach lub środowiskach pracy może być konieczne ponowne zdefiniowanie ustawień sieciowych, aby połączyć się z różnymi sieciami. Na przykład niektóre osoby zabierają ze sobą laptopa do domu i ustawiają statyczny adres IP specjalnie dla tej maszyny. Ponieważ jednak siecią roboczą jest zazwyczaj DHCP, wymaga to od osoby ciągłej zmiany ustawień sieciowych między statycznym adresem IP lub automatycznym DHCP w zależności od tego, gdzie się znajdują.

Częstszym problemem są inżynierowie lub pracownicy IT, którzy często muszą łączyć się z urządzeniami lub maszynami w małej sieci w budynku. Aby połączyć się z tą izolowaną siecią, musisz zmienić ustawienia sieci na statyczny adres IP. Później, kiedy ponownie połączysz się z siecią korporacyjną, ponownie wróci do DHCP.

Znalazłem się w takiej sytuacji dość często i tak bardzo zmęczyło mnie przeglądanie karty sieciowej, otwieranie ustawień IP i wprowadzanie tych zmian, że zdecydowałem, że najwyższy czas, aby stworzyć skrypt VB, który zrobiłby to wszystko w jednym lub dwa kliknięcia. Jeśli śledziłeś moje artykuły programistyczne, wiesz, że uwielbiam skrypty VB. Kiedyś użyłem go do stworzenia posiadanego komputera Stwórz dziwacznego opętanego komputera za pomocą skryptu systemu Windows na Halloween Stwórz dziwacznego opętanego komputera za pomocą skryptu systemu Windows na Halloween Istnieje wiele zabawnych dowcipów, w które możesz grać z przyjaciółmi przy komputerze. Prawdopodobnie widziałeś wszystkie przerażające filmy z YouTube, które ludzie przesyłają sobie nawzajem w celu zapewnienia dobrego przestraszenia… a także do automatyzacji Microsoft SyncToy Jak utworzyć narzędzie do tworzenia kopii zapasowych danych Za pomocą SyncToy & VB Script Jak utworzyć narzędzie do tworzenia kopii zapasowych danych Dzięki SyncToy i skryptowi VB Omówiliśmy wiele rozwiązań do tworzenia kopii zapasowych w MUO, a wszystkie te rozwiązania są świetne, ale jeśli pracujesz w środowisku, które obawia się bezpłatnych pakietów oprogramowania innych firm lub firm… dla danych kopie zapasowe.

Można również wykonać to zadanie za pomocą skryptu VB, a nawet uczynić go wystarczająco elastycznym, aby akceptował dane wejściowe użytkownika dotyczące statycznego adresu IP. W tym artykule pokażę, jak to zrobić w trzech sekcjach.

Tworzenie skryptu zmiany ustawień sieci

Istnieją trzy główne zadania, które należy wykonać za pomocą skryptu, aby utworzyć tę małą aplikację do przełączania ustawień sieciowych. Pierwszym jest użycie skryptu do utworzenia statycznych ustawień IP. Następnym jest wymyślenie skryptu, aby włączyć DHCP. Wreszcie, ostatnie pytanie polega na zapytaniu użytkownika, które zadanie chce wykonać, a następnie wykorzystaniu informacji zwrotnych, aby go wykonać.

Skrypt VB do ustawiania statycznych ustawień IP

Pamiętaj, że poniższe skrypty należy zapisać jako plik tekstowy z rozszerzeniem .wsf, aby można było pracować na komputerze z systemem Windows. Poniższy skrypt zmieni ustawienia sieci na statyczne IP z określoną maską podsieci i domyślną ścianą gatewall, przy czym wszystkie trzy zostaną zakodowane na stałe w skrypcie.

W przypadku wszystkich przykładów kodu wymienionych w tym artykule dodaj “” na początku i “ na koniec, w przeciwnym razie kod nie uruchomi się.
Oto skrypt statycznej zmiany adresu IP:

Opcja Wyraźnie przy błędzie Wznów Dalej Następny Przyciemnij objWMIService Przyciemnij objNetAdapter Przyciemnij strComputer Przyciemnij arIPIPAdres Przerwij arrSubnetMask Przyciemnij arrGateway Przyciemnij colNetAdapters Przerywaj errEnableStatic Przerywaj errGateways strComputer = "." arrIPAddress = Array ("192.168.1.106") arrSubnetMask = Array ("255.255.255.0") arrGateway = Array ("192.168.1.1") Ustaw objWMIService = GetObject ("winmgmts: \\" i strComputer & "\ root \ cimv2" ) Ustaw colNetAdapters = objWMIService.ExecQuery („Wybierz * z Win32_NetworkAdapterConfiguration gdzie IPEnabled = TRUE”) Dla każdego objNetAdapters w colNetAdapters errEnableStatic = objNetAdapter.EnableStatic (arrIPAddress, arrSubnetMask) If Not errEnable. „ End If errGateways = objNetAdapter.SetGateways (arrGateway) If Not errGateways = 0 Następnie WScript.Echo „Brama przypisująca błąd.” End If Next WScript.Quit

Ten skrypt używa usługi Windows WMI w systemie Windows, aby osiągnąć cel zmiany ustawień. Możesz zobaczyć trzy stałe zmienne tablicowe załadowane adresami IP, a następnie, gdzie skrypt sprawdza aktywność “włączone” karta sieciowa. Następnie używa “EnableStatic” i “SetGateways” metody wprowadzania wymaganych zmian. Kiedy uruchamiam skrypt w mojej sieci domowej (gdzie wymagam DHCP), możesz zobaczyć, gdzie skrypt pomyślnie zmienił ustawienia mojej karty i straciłem połączenie internetowe.

Po udowodnieniu, że część skryptu o statycznym adresie IP działa, nadszedł czas na napisanie skryptu, który ustawi adapter na DHCP, aby automatycznie wykrył adres IP sieci. Oto skrypt, którego możesz użyć, aby to zrobić.

Opcja Jawna przy błędzie Wznów Dalej Następny Przyciemnij objWMIService Przyciemnij objNetAdapter Przyciemnij strComputer Przyciemnij errEnable strComputer = "." Ustaw objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Ustaw colNetAdapters = objWMIService.ExecQuery ("Wybierz * z Win32_NetworkAdapterConfiguration gdzie IPEnabled = PRAWDA") Dla każdego objNetAdapterHelNetAdapters errNetAdapters ) Dalej WScript.Quit

Jak widać, ten skrypt jest o wiele prostszy. Korzysta również z WMI, ale jedyną wymaganą funkcją jest “EnableDHCP”. Odbywa się to na aktualnie włączonej karcie sieciowej. Po zapisaniu i uruchomieniu tego skryptu ustawienia mojej karty adaptera zmieniły się z powrotem na DHCP, a moje połączenie internetowe znów działało.

Teraz, gdy masz już kod do wykonania obu ważnych czynności, następną częścią tej sztuczki będzie pobranie danych od użytkownika, aby dokładnie określić, jakiego statycznego adresu IP chcą. Aby ponownie włączyć DHCP, możesz wymagać od użytkownika wprowadzenia słowa “AUTOMATYCZNY” do automatycznego wykrywania adresu IP.
Oto, jak wygląda ten nowy, pełny skrypt zawierający dwa powyższe skrypty.

Opcja Wyraźnie przy błędzie Wznów Dalej Następny Przyciemnij objWMIService Przyciemnij objNetAdapter Przyciemnij strComputer Przyciemnij arIPIPAdres Przerwij arrSubnetMask Przyciemnij arrGateway Przyciemnij colNetAdapters Przerywaj errEnableStatic Przerywaj dim errGateways Dim strInput Przerywaj err errfailed errFailed = 0 strInput = InputBox ("Typ Statyczny adres IP" AUTO " Następnie strComputer = "." Ustaw objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Ustaw colNetAdapters = objWMIService.ExecQuery ("Wybierz * z Win32_NetworkAdapterConfiguration gdzie IPEnabled = PRAWDA") Dla każdego objNetAdapterHelNetAdapters errNetAdapters ) If Not errEnable = 0 Następnie WScript.Echo „Ustawienie DHCP nie powiodło się”. errFailed = 1 End If Next Else strComputer = "." arrIPAddress = Array (strInput) arrSubnetMask = Array ("255.255.255.0") arrGateway = Array ("192.168.1.1") Ustaw objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Ustaw colNetAdapters objWMIService.ExecQuery („Wybierz * z Win32_NetworkAdapterConfiguration gdzie IPEnabled = TRUE”) Dla każdego objNetAdapter w colNetAdapters errEnableStatic = objNetAdapter.EnableStatic (arrIPAddress, arrSubnetMask) Jeśli nie errEnableStatic = 0 Następnie Wnet. errFailed = 1 End If errGateways = objNetAdapter.SetGateways (arrGateway) If Not errGateways = 0 Następnie WScript.Echo „Brama przypisująca błąd.” errFailed = 1 End If Next End If If errFailed = 0 Następnie WScript.Echo „Ustawienia IP zostały pomyślnie zmodyfikowane”. End If WScript.Quit

Ten skrypt używa funkcji InputBox do uzyskania statycznego adresu IP lub adresu “AUTOMATYCZNY” polecenie od użytkownika.

Jeśli coś innego niż “AUTOMATYCZNY” jest wpisane w polu, które będzie używane jako ciąg statycznego adresu IP w sekcji kodu, która używa WMI do ustawienia statycznych ustawień adresu IP karty sieciowej. Jest też czek na “0” potwierdzenie, że wszystko poszło dobrze.

Sprawdzając ustawienia karty sieciowej po uruchomieniu skryptu, potwierdziłem, że skrypt faktycznie zmienił ustawienia statycznego adresu IP.

Teraz przetestuj skrypt AUTO. Wpisanie AUTO spełnia pierwszy warunek w “JEŚLI” sprawdzanie instrukcji dla AUTO. Spowoduje to uruchomienie alternatywnego skryptu, który włącza DHCP.

Po uruchomieniu tego przeszedłem do ustawień adaptera i na pewno wróciłem do opcji Uzyskaj adres IP automatycznie.

Chociaż przejście do ustawień karty sieciowej i zmiana na statyczną lub DHCP może być dość prostym zadaniem, jeśli trzeba to robić naprawdę często, może to stać się prawdziwym bólem. Możesz to zrobić z wiersza poleceń, używając “netsh”, ale znowu musisz pamiętać składnię polecenia.

Użycie powyższego skryptu pozwala zbudować szybkie i łatwe w użyciu narzędzie, którego można użyć w dowolnym momencie do zmiany ustawień sieciowych w locie.

Myślisz, że możesz spróbować tego skryptu Windows? Jakieś inne pomysły na ulepszenie go i uczynienie go jeszcze lepszym? Podziel się swoimi przemyśleniami i sugestiami w sekcji komentarzy poniżej.

Źródło zdjęcia: Kody binarne za pośrednictwem Shutterstock




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.