5 Användbara VB Windows -skript för att automatisera datoranvändning

5 Användbara VB Windows -skript för att automatisera datoranvändning

Oavsett om du är en IT -analytiker eller en vanlig datoranvändare, det finns många uppgifter du kan behöva utföra ofta på din dator. VB -skript skalas ner i Visual Basic -program som fungerar som Windows -skript som kan göra allt från att ta fram viktig information om din datormaskinvara, till att stoppa och starta tjänster eller återställa ditt nätverkskort.





Det är möjligt att lära sig att göra alla dessa enskilda saker på normalt sätt, eller göra dem med hjälp av batchfiler. Men VB -skript är bättre än batch -skript eftersom de är mer flexibla. Om du lagrar följande skript på en gemensam plats som du snabbt kan komma till när du behöver det kan du utföra dessa uppgifter på en bråkdel av tiden. Du dubbelklickar bara på skriptet, svarar på en fråga och uppgiften är klar.





Ta en titt på följande VB Windows -skript och om du ser något du vill använda, bara kopiera och klistra in skriptet i Anteckningsblock eller annat verktyg för kodningsanteckningar och spara den som en WSF -fil.





Förbered dina Windows -skript

Var och en av skripten som beskrivs nedan körs med bara ett dubbelklick så länge du har namngivit filen med tillägget .WSF och du har också bifogat koden i början med:


Och stäng koden med:



WScript.Quit

Detta säkerställer att Windows känner igen språket som ditt skript är skrivet på och bearbetar det korrekt.

1. Använd Windows -skript för datorinformation

Windows erbjuder något som kallas WMI, eller Windows Management Instrumentation, som ger ditt skript ett gränssnitt för att komma åt komponenter i operativsystemet. Du kan faktiskt köra frågor mot WMI för att få aktuell liveinformation om ditt system. Microsoft erbjuder en fullständig lista över alla kategorier av frågor du kan göra mot systemet.





Vi har täckt hur du använder VBA för att dra datorinformation till Excel, men du kan göra samma sak med ett enkelt VB -skript utanför Excel.

I det här exemplet kommer vi att fråga systemet om processorinformation (familj, tillverkare och antal kärnor), batteriinformation (beskrivning och status) och logisk diskinformation (namn, ledigt utrymme kvar och total storlek). Sedan skickar vi ut all denna information till en CSV -fil för enkel visning.





Det första steget är att konfigurera FileSystemObject som du använder för att mata ut till CSV -filen och skapa filen:

Set oFSO = CreateObject('Scripting.FileSystemObject')
sFile1 = 'MyComputerInfo.csv'
Set oFile1 = oFSO.CreateTextFile(sFile1, 1)

Nästa steg är att konfigurera WMI -frågan och köra den:

kan du lägga till ram till ett macbook pro
strQuery = 'SELECT Family,Manufacturer,NumberOfCores FROM Win32_Processor'
Set colResults = GetObject('winmgmts://./root/cimv2').ExecQuery( strQuery )

Slutligen, sortera igenom resultaten och mata ut informationen till CSV -filen. Om du vill vara snygg, föregå detta med ett par rader för att få din utdatafil att se bättre ut:

oFile1.WriteLine 'Processor Information'
oFile1.WriteLine '------'
For Each objResult In colResults
strResults = 'Family:,'+CStr(objResult.Family)
oFile1.WriteLine strResults
strResults = 'Manufacturer:,'+CStr(objResult.Manufacturer)
oFile1.WriteLine strResults
strResults = 'Number of Cores:,'+CStr(objResult.NumberOfCores)
oFile1.WriteLine strResults
Next

Om du kör din kod nu ser din utgång ut så här:

För de kommande två sektionerna av din kod kommer du bara att upprepa och ändra frågan för att leta efter ytterligare information. Här är frågan om batteriinformation:

oFile1.WriteLine ''
strQuery = 'SELECT Description,Status FROM Win32_Battery'
Set colResults = GetObject('winmgmts://./root/cimv2').ExecQuery( strQuery )
oFile1.WriteLine 'Battery Information'
oFile1.WriteLine '------'
For Each objResult In colResults
strResults = 'Status:,'+CStr(objResult.Description)
oFile1.WriteLine strResults
strResults = 'Description:,'+CStr(objResult.Status)
oFile1.WriteLine strResults
Next

Och här är nästa avsnitt för den logiska diskfrågan:

oFile1.WriteLine ''
strQuery = 'Select Name, FreeSpace, Size from Win32_LogicalDisk'
Set colResults = GetObject('winmgmts://./root/cimv2').ExecQuery( strQuery )
oFile1.WriteLine 'Disk Information'
oFile1.WriteLine '------'
'Identify the Logical Disk Space
For Each objResult In colResults
strResults = 'Name:,'+CStr(objResult.Name)
oFile1.WriteLine strResults
strResults = 'Free Space:,'+CStr(objResult.FreeSpace)
oFile1.WriteLine strResults
strResults = 'Disk Size:,'+CStr(objResult.Size)
oFile1.WriteLine strResults
Next

Slutligen, kom ihåg att stänga av koden genom att stänga filen och ställa in objekten till 'ingenting':

oFile1.Close
Set oFile1 = Nothing
set colResults = Nothing
strResults = ''

Lägg all den koden i din nya .WSF -fil, kör den, och så här kommer din utgång att se ut:

Byt bara ut frågorna ovan för andra datorenheter eller programvara du vill få information om, så kan du få en fullständig systemrapport när du vill med bara ett musklick.

2. Stoppa och starta tjänster

Det kommer att finnas tillfällen då vissa tjänster har problem och kräver bara en snabb omstart för att köra ordentligt igen. Detta är särskilt sant inom IT när du tvingas köra serverprogramvara som ibland är lite buggig.

Om du vill raka en minut eller så av tjänsten omstartsprocessen, bara lagra följande skript någonstans bekvämt. Det kommer att uppmana dig att skriva in namnet på tjänsten du vill starta om, och sedan gör det exakt det.

Eftersom stopp och start av tjänster kräver administrativa rättigheter måste du placera följande kod i början av skriptet för att ge ditt skript förhöjda privilegier :

If Not WScript.Arguments.Named.Exists('elevate') Then
CreateObject('Shell.Application').ShellExecute WScript.FullName _
, '''' & WScript.ScriptFullName & ''' /elevate', '', 'runas', 1
WScript.Quit
End If

När detta är gjort lägger du till resten av koden för att köra inmatningsrutan för användarinmatning, startar kommandofönstret och skickar det 'net stop' och 'net start command':

Set cmdShell = CreateObject('WScript.Shell')
strServiceName=Inputbox('Inter Service to Stop','Input Required')
cmdShell.Run 'cmd.exe'
WScript.Sleep 1000
cmdShell.SendKeys 'net stop '+strServiceName
cmdShell.SendKeys '{Enter}'
WScript.Sleep 1000
cmdShell.SendKeys 'net start '+strServiceName
cmdShell.SendKeys '{Enter}'
WScript.Sleep 1000
cmdShell.SendKeys 'Exit'
cmdShell.SendKeys '{Enter}'

Det är allt som finns. Du behöver inte leta efter serviceverktyget. Kör bara detta skript och stoppa och starta någon tjänst på några sekunder.

3. Ändra registerinställningar, standardadministratörslösenord

Med följande manus kommer vi att döda två fåglar i en smäll. Detta manus visar dig hur du gör redigera registret med ett VB -skript. Det ger dig också ett skript som låter dig ställa in Windows -användarnamn och lösenord som standard genom att redigera dessa registerinställningar.

Så här fungerar det. För det första, eftersom redigering av registret kräver administratörsrättigheter måste du ställa in förhöjda privilegier för ditt skript:

If Not WScript.Arguments.Named.Exists('elevate') Then
CreateObject('Shell.Application').ShellExecute WScript.FullName _
, '''' & WScript.ScriptFullName & ''' /elevate', '', 'runas', 1
WScript.Quit
End If

Kör först två inmatningsrutor för att fråga användaren vilket användarnamn och lösenord som ska användas:

strUserName=Inputbox('Enter the default User Name','Input Required')
strPassword=Inputbox('Enter the default Password','Input Required')

Ställ sedan in skalobjektet och skriv dessa värden till lämpliga registernycklar:

Set wshShell = CreateObject( 'WScript.Shell' )
wshShell.RegWrite 'HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultUserName', strUserName, 'REG_SZ'
wshShell.RegWrite 'HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWinlogonDefaultPassword', strPassword, 'REG_SZ'
Set wshShell = Nothing

Och det är allt som finns. Metoden 'RegWrite' låter dig skriva valfritt värde till valfri registernyckel med ett VB Windows -skript. Allt du behöver veta är rätt väg.

Kör skriptet och svara på uppmaningarna.

De värden du anger kommer att sättas in direkt i de registerinställningar du har konfigurerat i skriptet.

Lek med manuset och justera det efter eget tycke. Du kan redigera alla registernycklar du vill, så var kreativ!

4. Återställ din nätverksanslutning

Återställa din nätverksanslutning med VB -skript är något vi har täckt tidigare här på MakeUseOf. Följande version av detta är faktiskt nedskalad och mycket enklare att implementera. Istället för att be om individuella nätverkskort återställs alla dina aktiva anslutningar som förhoppningsvis skulle lösa eventuella nätverksproblem.

Som med andra skript som behöver administratörsrättigheter måste du lägga till avsnittet i början för förhöjda privilegier. Kopiera koden från skriptet ovan.

Skapa sedan WMI -objektet och fråga efter en lista över aktiverade nätverkskort på ditt system:

strComputer = '.'
Set objWMIService = GetObject('winmgmts:\' & strComputer & 'ootCIMV2')
Set colItems = objWMIService.ExecQuery( _
'SELECT * FROM Win32_NetworkAdapter Where NetEnabled = 'True'')

Slutligen går du igenom alla aktiverade adaptrar och återställer dem:

For Each objItem in colItems
objItem.Disable
WScript.Sleep 1000
objItem.Enable
Next

Detta kommer att återställa alla dina aktiva nätverkskort , vilket ofta är det snabbaste sättet att lösa irriterande nätverksproblem. Håll det här skriptet till hands och prova det först när du har ett långsamt nätverk eller andra konstiga nätverksproblem.

5. Ping -enheter eller webbplatser

Jag har sparat mitt favorit VB windows -skript för sista. Det här är en som jag faktiskt ställde in som en schemalagd uppgift på min hemdator och låter den köras flera gånger om dagen bara för att kontrollera om min webbplats är aktiv. Jag har skriptet mejla mig om webbplatsen är nere. Du kan använda samma skript för att övervaka viktiga servrar eller datorer i ditt nätverk och skicka e -post till dig själv när ditt skript inte kan pinga enheten.

Ställ först in skriptet för målet du vill pinga, skapa skalobjektet och kör sedan ping -kommandot.

strTarget = 'topsecretwriters.com'
Set WshShell = WScript.CreateObject('WScript.Shell')
Ping = WshShell.Run('ping -n 1 ' & strTarget, 0, True)

Använd en Select Case -sats för att köra igenom Ping -resultaten och svara därefter. Om resultaten kommer tillbaka som noll vet du att webbplatsen (eller servern) är online och du behöver inte göra någonting. Om det returnerar ett '1' misslyckades pingen och du måste göra något. I mitt fall skickar jag ett e -postmeddelande med Windows CDO -objektet:

Select Case Ping
Case 0
Case 1
Set objMessage = CreateObject('CDO.Message')
Set objConfig = CreateObject('CDO.Configuration')
objConfig.Load -1
Set Flds = objConfig.Fields
With Flds
.Item ('http://schemas.microsoft.com/cdo/configuration/smtpusessl') = True
.Item ('http://schemas.microsoft.com/cdo/configuration/smtpauthenticate')=1
.Item ('http://schemas.microsoft.com/cdo/configuration/sendusername')='xxxxxx@gmail.com'
.Item ('http://schemas.microsoft.com/cdo/configuration/sendpassword')='xxxxxxxxxxxxxxxxx'
.Item ('http://schemas.microsoft.com/cdo/configuration/smtpserver')='smtp.gmail.com'
.Item ('http://schemas.microsoft.com/cdo/configuration/sendusing')=2
.Item ('http://schemas.microsoft.com/cdo/configuration/smtpserverport')=465
.Update
End With
With objMessage
Set .Configuration = objConfig
.Subject = 'Your site is offline'
.From = 'me@mycomputer.com'
.To = 'xxxxxx@gmail.com'
.TextBody = 'Hey, your website is offline.'
.Send
End With
End Select

När skriptet körs och inte kan pinga enheten eller webbplatsen får du ett snabbmeddelande.

Det är snabbt och enkelt, och varje effektivt!

Använda VB Windows -skript för att styra din dator

Detta är bara några exempel på några av de coola sakerna du kan göra med VB -skript för att effektivisera din datoranvändning. Det finns många andra saker du kan göra som automatiserade säkerhetskopior med VB och Synctoy, automatisering av telnetkommandon eller till och med öppna och styra programfönster.

Vad är några av de saker du har automatiserat på din dator med ett Windows -skript? Skriver du ditt med VB, eller använder du något annat verktyg som PowerShell ?

Dela med sig Dela med sig Tweet E-post Här är varför FBI utfärdade en varning för Hive Ransomware

FBI utfärdade en varning om en särskilt otäck stam av ransomware. Här är varför du måste vara särskilt försiktig med Hive -ransomware.

Läs Nästa
Relaterade ämnen
  • Programmering
  • Datorautomation
  • Scripting
Om författaren Ryan Dube(942 artiklar publicerade)

Ryan har en kandidatexamen i elektroteknik. Han har arbetat 13 år inom automationsteknik, 5 år inom IT och är nu en Apps Engineer. Han var tidigare chefredaktör för MakeUseOf och talade vid nationella konferenser om datavisualisering och har presenterats på nationell TV och radio.

Mer från Ryan Dube

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e -böcker och exklusiva erbjudanden!

Klicka här för att prenumerera