Annons
Den här veckan snubblat jag över ett intressant problem. I många kontor eller arbetsmiljöer kan du behöva omdefiniera dina nätverksinställningar för att ansluta till olika nätverk. Till exempel tar vissa människor sin bärbara dator med sig hem och har en statisk IP-inställning specifikt för den maskinen. Eftersom arbetsnätverket vanligtvis är DHCP kräver det dock att personen fortsätter att ändra nätverksinställningarna mellan en statisk IP eller automatisk DHCP beroende på var de befinner sig.
Ett vanligare problem är för ingenjörer eller IT-personal som ofta behöver ansluta till enheter eller maskiner i ett litet nätverk i en byggnad. För att ansluta till det isolerade nätverket måste du ändra dina nätverksinställningar till en statisk IP. Senare, när du ansluter till företagets nätverk igen, är det tillbaka till DHCP igen.
Jag befann mig ofta i den här situationen och blev så trött på att bläddra till nätverkskortet och öppna IP-inställningarna och att göra dessa redigeringar, att jag bestämde mig för att det var hög tid att sätta ihop ett VB-skript som skulle göra allt på ett eller två klick. Om du har följt med mina programmeringsartiklar, vet du att jag älskar VB-skript. Jag brukade det en gång
skapa en besatt dator Skapa en Freaky Besatt dator med Windows-skript till HalloweenDet finns många roliga pranks som du kan spela på dina vänner med en dator. Du har förmodligen sett alla dessa läskiga YouTube-videor som folk vidarebefordrar till varandra för en bra skräck ... Läs mer , och brukade också göra det automatisera Microsoft SyncToy Hur man skapar ett datalagringsverktyg med SyncToy & VB-skriptVi har täckt många säkerhetskopieringslösningar här på MUO, och alla dessa lösningar är bra, men om du arbetar i en miljö som är försiktig med kostnadsfria programvarupaket från tredje part eller företag ... Läs mer för säkerhetskopiering av data.Det är också möjligt att utföra denna uppgift med VB-skript, och det är till och med möjligt att göra den flexibel nog så att den kan acceptera användarinmatning för den statiska IP-adressen. I den här artikeln visar jag dig hur du gör det i tre avsnitt.
Skapa en nätverksinställning Ändra skript
Det finns tre huvuduppgifter du behöver utföra med skriptet för att skapa den här lilla appen för att byta nätverksinställningar. Den första är att använda skriptet för att skapa statiska IP-inställningar. Nästa är att komma med ett skript för att aktivera DHCP. Slutligen är det sista att fråga användaren vilken uppgift de vill göra och sedan använda den feedbacken för att utföra den.
VB-skript för att ställa in statiska IP-inställningar
Kom ihåg att följande skript måste sparas som en textfil med en .wsf-förlängning för att fungera på en Windows-dator. Följande skript kommer att ändra dina nätverksinställningar till en statisk IP med en specifik subnetmask och standard gatewall, med alla tre hårdkodade i skriptet.
För alla kodprover som listas i den här artikeln, se till att lägga till "
Här är det statiska IP-förändringsskriptet:
Alternativ explicit vid fel Återuppta Nästa Dim 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") Ställ in objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Ställ in colNetAdapters = objWMIService. ExecQuery ("Välj * från Win32_NetworkAdapterConfiguration där IPEnabled = TRUE") För varje objNetAdapter i colNetAdapters errEnableStatic = objNetAdapter. EnableStatic (arrIPAddress, arrSubnetMask) If Not errEnableStatic = 0 Sedan WScript. Echo "Fel vid tilldelning av IP / Subnet." Avsluta Om errGateways = objNetAdapter. SetGateways (arrGateway) Om inte errGateways = 0 Sedan WScript. Echo "Misslyckande tilldelar Gateway." Avsluta om nästa. Wscript. Sluta med
Detta skript använder Windows WMI-tjänsten i Windows för att uppnå målet att ändra inställningar. Du kan se de tre fasta arrayvariablerna laddade med IP-adresserna, och där skriptet söker efter det aktiva "aktiverade" nätverkskortet. Sedan använder den metoden "EnableStatic" och "SetGateways" för att göra de nödvändiga ändringarna. När jag kör skriptet i mitt hemnätverk (där jag kräver DHCP) kan du se var skriptet ändrade mina adapterinställningar och jag har tappat min Internet-anslutning.
Efter att ha bevisat att den statiska IP-delen av skriptet fungerar, är det dags att skriva skriptet som kommer att ställa in adaptern till DHCP så att den automatiskt kommer att upptäcka nätverkets IP. Här är skriptet som du kan använda för att göra det.
Alternativ explicit vid fel Återuppta Nästa Dim objWMIService. Dim objNetAdapter. Dim strComputer. Dim errEnable strComputer = "." Ställ in objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Ställ in colNetAdapters = objWMIService. ExecQuery ("Välj * från Win32_NetworkAdapterConfiguration där IPEnabled = TRUE") För varje objNetAdapter i colNetAdapters errEnable = objNetAdapter. EnableDHCP () Nästa WScript. Sluta med
Som ni ser är detta skript mycket enklare. Den använder också WMI, men den enda funktion som krävs är "EnableDHCP". Detta utförs på den nuvarande aktiverade nätverksadaptern. Efter att jag hade sparat och kört detta skript, ändrades mina adapterkortinställningar tillbaka till DHCP, och min Internet-anslutning fungerade igen.
Så nu när du har fått koden för att utföra båda de viktiga åtgärderna kommer nästa del av det här tricket att ta input från användaren för att avgöra exakt vilken statisk IP de vill ha. För att aktivera DHCP igen kan du kräva att användaren anger ordet "AUTO" för att automatiskt upptäcka IP: n.
Så här ser det här nya, fullständiga skriptet som innehåller de två skripten ovan ut.
Alternativ explicit vid fel Återuppta Nästa Dim 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 ("Skriv statisk IP-adress eller AUTO") Om strInput = "AUTO" Sedan strComputer = "." Ställ in objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Ställ in colNetAdapters = objWMIService. ExecQuery ("Välj * från Win32_NetworkAdapterConfiguration där IPEnabled = TRUE") För varje objNetAdapter i colNetAdapters errEnable = objNetAdapter. EnableDHCP () If Not errEnable = 0 Then WScript. Echo "Ställa in DHCP misslyckades." errFailed = 1 Slut om nästa. Annars strComputer = "." arrIPAddress = Array (strInput) arrSubnetMask = Array ("255.255.255.0") arrGateway = Array ("192.168.1.1") Ställ in objWMIService = GetObject ("winmgmts: \\" & strComputer & "\ root \ cimv2") Ställ in colNetAdapters = objWMIService. ExecQuery ("Välj * från Win32_NetworkAdapterConfiguration där IPEnabled = TRUE") För varje objNetAdapter i colNetAdapters errEnableStatic = objNetAdapter. EnableStatic (arrIPAddress, arrSubnetMask) If Not errEnableStatic = 0 Sedan WScript. Echo "Fel vid tilldelning av IP / Subnet." errFailed = 1 Slut Om errGateways = objNetAdapter. SetGateways (arrGateway) Om inte errGateways = 0 Sedan WScript. Echo "Misslyckande tilldelar Gateway." errFailed = 1 slut om nästa slut om om errFailed = 0 sedan WScript. Echo "IP-inställningar har modifierats." Avsluta om WScript. Sluta med
Det här skriptet använder InputBox-funktionen för att få antingen den statiska IP- eller "AUTO" -kommandot från användaren.
Om något annat än ”AUTO” skrivs in i fältet, kommer det att användas som den statiska IP-strängen i kodavsnittet som använder WMI för att ställa in de statiska IP-inställningarna för nätverkskortet. Det finns också en kontroll av "0" -bekräftelsen som säger att allt gick okej.
När jag kontrollerade mina nätverkskortsinställningar efter att jag hade kört skriptet bekräftade jag att skriptet faktiskt gjorde ändringar av statisk IP-inställning.
Nu för att testa AUTO-skriptet. Att skriva AUTO uppfyller det första villkoret i ”IF” -säkringen som kontrollerar för AUTO. Detta kör det alternativa skriptet som aktiverar DHCP.
Efter att ha kört detta, gick jag in på mina adapterinställningar och säkert nog, den sattes tillbaka till att få en IP-adress automatiskt.
Det kan vara en tillräckligt enkel uppgift att gå in i dina nätverkskortinställningar och ändra till statisk eller DHCP, men om du måste göra det verkligen ofta kan det bli en verklig smärta. Du kan göra det från en kommandorad med "netsh", men igen måste du komma ihåg kommandosyntaxen.
Genom att använda skriptet ovan kan du bygga ett snabbt och enkelt verktyg som du kan använda när som helst för att ändra nätverksinställningarna.
Tror du att du kan prova detta Windows-script? Några andra idéer för att finjustera det och göra det ännu bättre? Dela dina tankar och förslag i kommentarerna nedan.
Bildkredit:Binära koder via Shutterstock
Ryan har en kandidatexamen i elektroteknik. Han har arbetat 13 år inom automationsteknik, 5 år inom IT och är nu en applikationsingenjör. Han var tidigare chefredaktör för MakeUseOf och talade vid nationella konferenser om datavisualisering och har varit med på nationell TV och radio.