Reklama
W tym tygodniu natknąłem się na ciekawy problem. W wielu biurach lub środowiskach pracy może być konieczne przedefiniowanie 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 zwykle 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, gdy ponownie połączysz się z siecią korporacyjną, ponownie wróci do DHCP.
Wystarczająco często znajdowałem się w tej sytuacji i tak bardzo męczy mnie przeglądanie karty sieciowej, otwieranie ustawień IP i dokonując tych zmian, uznałem, że najwyższy czas, aby stworzyć skrypt VB, który zrobiłby to wszystko w jednym lub dwóch kliknięcia. Jeśli śledziłeś moje artykuły programistyczne, wiesz, że uwielbiam skrypty VB. Kiedyś tego użyłem
stworzyć posiadany komputer Utwórz dziwaczny komputer z opcją Windows Script na HalloweenIstnieje wiele zabawnych dowcipów, w które możesz grać na znajomych z komputerem. Prawdopodobnie widziałeś wszystkie przerażające filmy z YouTube, które ludzie przesyłają sobie nawzajem ze względu na dobry strach ... Czytaj więcej , a także kiedyś zautomatyzuj Microsoft SyncToy Jak utworzyć narzędzie do tworzenia kopii zapasowych danych za pomocą SyncToy & VB ScriptW MUO omówiliśmy wiele rozwiązań do tworzenia kopii zapasowych, 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 ... Czytaj więcej do tworzenia kopii zapasowych danych.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 z nich 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 statyczny adres 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 „
Oto skrypt statycznej zmiany adresu IP:
Opcja Jawna przy błędzie Wznów dalej Przyciemnij objWMIService. Dim objNetAdapter. Dim strComputer. Dim arrIPAddress. Dim arrSubnetMask. Dim arrGateway. Dim colNetAdapters. Dim errEnableStatic. Dim errGateways strComputer = "." arrIPAddress = Array („192.168.1.106”) 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) If Not errEnableStatic = 0 Następnie WScript. Echo „Niepowodzenie przypisania adresu IP / podsieci”. End If errGateways = objNetAdapter. SetGateways (arrGateway) If Not errGateways = 0 Następnie WScript. Echo „Brama przypisująca błąd.” End If Next. WScript. Porzucić
Ten skrypt korzysta z 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 aktywną „włączoną” kartę sieciową. Następnie używa metod „EnableStatic” i „SetGateways”, aby wprowadzić wymagane zmiany. Kiedy uruchamiam skrypt w mojej sieci domowej (gdzie wymagam DHCP), możesz zobaczyć, gdzie skrypt pomyślnie zmienił ustawienia mojej karty sieciowej i straciłem połączenie z Internetem.
Po udowodnieniu, że część skryptu o statycznym adresie IP działa, nadszedł czas, aby napisać skrypt, który ustawi adapter na DHCP, aby automatycznie wykrywał adres IP sieci. Oto skrypt, którego możesz użyć, aby to zrobić.
Opcja Jawna przy błędzie Wznów dalej Przyciemnij objWMIService. Dim objNetAdapter. Dim strComputer. Dim errEnable strComputer = "." Ustaw objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Ustaw colNetAdapters = objWMIService. ExecQuery („Wybierz * z Win32_NetworkAdapterConfiguration gdzie IPEnabled = TRUE”) Dla każdego objNetAdapter w colNetAdapters errEnable = objNetAdapter. EnableDHCP () Następny WScript. Porzucić
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 działało ponownie.
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 „AUTO” w celu automatycznego wykrycia adresu IP.
Oto jak wygląda ten nowy, pełny skrypt zawierający dwa powyższe skrypty.
Opcja Jawna przy błędzie Wznów dalej Przyciemnij objWMIService. Dim objNetAdapter. Dim strComputer. Dim arrIPAddress. Dim arrSubnetMask. Dim arrGateway. Dim colNetAdapters. Dim errEnableStatic. Dim errGateways. Dim strInput. Dim errFailed errFailed = 0 strInput = InputBox („Wpisz statyczny adres IP lub AUTO”) Jeśli strInput = „AUTO” Następnie strComputer = "." Ustaw objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Ustaw colNetAdapters = objWMIService. ExecQuery („Wybierz * z Win32_NetworkAdapterConfiguration gdzie IPEnabled = TRUE”) Dla każdego objNetAdapter w colNetAdapters errEnable = objNetAdapter. EnableDHCP () If Not errEnable = 0, a następnie WScript. Echo „Ustawienie DHCP nie powiodło się”. errFailed = 1 End If Next. W przeciwnym razie strComputer = "." arrIPAddress = Array (strInput) arrSubnetMask = Array („255.255.255.0”) arrGateway = Tablica („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) If Not errEnableStatic = 0 Następnie WScript. Echo „Niepowodzenie przypisania adresu IP / podsieci”. 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, a następnie WScript. Echo „Ustawienia IP zostały pomyślnie zmodyfikowane”. End If WScript. Porzucić
Ten skrypt używa funkcji InputBox, aby uzyskać od użytkownika statyczny adres IP lub polecenie „AUTO”.
Jeśli w polu zostanie wpisane coś innego niż „AUTO”, zostanie ono użyte jako ciąg statycznego adresu IP w sekcji kodu używającej WMI do ustawienia ustawień statycznego adresu IP karty sieciowej. Sprawdzane jest również potwierdzenie „0”, które mówi, że wszystko poszło dobrze.
Sprawdzając ustawienia mojej karty sieciowej po uruchomieniu skryptu, potwierdziłem, że skrypt faktycznie wprowadził zmiany w ustawieniach statycznego adresu IP.
Teraz przetestuj skrypt AUTO. Wpisanie AUTO spełnia pierwszy warunek w instrukcji „IF” sprawdzającej 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 być prawdziwy ból. 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
Ryan ma tytuł licencjata z inżynierii elektrycznej. Pracował 13 lat w inżynierii automatyki, 5 lat w IT, a teraz jest inżynierem aplikacji. Były redaktor naczelny MakeUseOf, przemawiał na krajowych konferencjach dotyczących wizualizacji danych i był prezentowany w krajowej telewizji i radiu.