5 Užitečných skriptů VB Windows pro automatizaci používání počítače

5 Užitečných skriptů VB Windows pro automatizaci používání počítače

Ať už jste analytik IT nebo běžný uživatel počítače, existuje mnoho úkolů, které budete na svém počítači muset často dělat. Skripty VB jsou zmenšenými programy jazyka Visual Basic, které slouží jako skripty systému Windows a které mohou provádět cokoli od načtení důležitých informací o hardwaru počítače až po zastavení a spuštění služeb nebo resetování síťové karty.





Je možné se naučit, jak všechny tyto jednotlivé věci dělat normálním způsobem, nebo je dělat pomocí dávkových souborů. Ale Skripty VB jsou lepší než dávkové skripty protože jsou flexibilnější. Pokud uložíte následující skripty na společné místo, kam se rychle dostanete, když to potřebujete, můžete tyto úkoly splnit za zlomek času. Stačí dvakrát kliknout na skript, odpovědět na výzvu a úkol je hotov.





Podívejte se na následující skripty VB Windows a pokud uvidíte nějaké, které byste chtěli použít, jednoduše zkopírujte a vložte skript do Poznámkový blok nebo jiný nástroj pro poznámky o kódování a uložte jej jako soubor WSF.





Připravte si skripty Windows

Každý ze skriptů popsaných níže se spustí pouhým dvojitým kliknutím, pokud jste soubor pojmenovali příponou .WSF a ​​kód jste také na začátku uzavřeli:


A zavřete kód pomocí:



WScript.Quit

Tím je zajištěno, že systém Windows rozpozná jazyk, ve kterém je napsán váš skript, a správně jej zpracuje.

1. Pro informace o počítači použijte skripty Windows

Windows nabízí něco, čemu se říká WMI nebo Windows Management Instrumentation, které skriptu poskytuje rozhraní pro přístup ke komponentám operačního systému. Ve skutečnosti můžete spouštět dotazy proti WMI, abyste získali aktuální živé informace o vašem systému. Společnost Microsoft nabízí úplný seznam všech kategorie dotazů můžete proti systému.





Zkoumali jsme, jak pomocí VBA přenést informace o počítači do Excelu, ale to samé můžete udělat pomocí jednoduchého skriptu VB mimo Excel.

V tomto příkladu budeme dotazovat systém na informace o procesoru (rodina, výrobce a počet jader), informace o baterii (popis a stav) a informace o logickém disku (název, zbývající volné místo a celková velikost). Poté všechny tyto informace přeneseme do souboru CSV pro snadné prohlížení.





Prvním krokem je nastavení FileSystemObject, který použijete pro výstup do souboru CSV, a vytvoření souboru:

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

Dalším krokem je nastavení dotazu WMI a jeho spuštění:

jak rychle začít sérii na snapchatu
strQuery = 'SELECT Family,Manufacturer,NumberOfCores FROM Win32_Processor'
Set colResults = GetObject('winmgmts://./root/cimv2').ExecQuery( strQuery )

Nakonec seřaďte výsledky a odešlete informace do souboru CSV. Pokud chcete být efektní, předmluvte to několika řádky, aby váš výstupní soubor vypadal lépe:

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

Pokud nyní spustíte kód, bude váš výstup vypadat takto:

V následujících dvou částech kódu budete jen opakovat a měnit dotaz a hledat další informace. Zde je dotaz na informace o baterii:

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

A tady je další část pro dotaz logického disku:

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

Nakonec nezapomeňte zavřít kód zavřením souboru a nastavením objektů na 'Nic':

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

Vložte celý tento kód do nového souboru .WSF, spusťte jej a váš výstup bude vypadat takto:

Stačí vyměnit výše uvedené dotazy za jiná počítačová zařízení nebo software, o kterých chcete získat informace, a můžete kdykoli získat úplnou zprávu o systému pouhým kliknutím myši.

2. Zastavte a spusťte služby

Mohou nastat situace, kdy mají určité služby problémy a vyžadují pouze rychlý restart, aby mohly znovu správně fungovat. To je obzvláště pravda v IT když jste nuceni spustit serverový software, který je někdy trochu buggy.

Chcete -li se oholit zhruba minutu od restartu služby, uložte následující skript na nějaké vhodné místo. Zobrazí se výzva k zadání názvu služby, kterou chcete restartovat, a poté to udělá přesně tak.

Vzhledem k tomu, že zastavování a spouštění služeb vyžaduje oprávnění správce, je třeba na začátek skriptu umístit následující kód, který vám skript poskytne. zvýšené výsady :

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

Jakmile to bude hotové, přidejte zbytek kódu ke spuštění vstupního pole pro vstup uživatele, spusťte příkazové okno a odešlete mu příkazy „net stop“ a „net start commands“:

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}'

To je všechno. Není třeba hledat nástroj pro služby. Stačí spustit tento skript a během několika sekund zastavit a spustit jakoukoli službu.

3. Změňte nastavení registru, výchozí heslo správce

S následujícím scénářem zabijeme dvě mouchy jednou ranou. Tento skript vám ukáže, jak na to upravit registr se skriptem VB. Poskytne vám také skript, který vám umožní nastavit výchozí uživatelské jméno a heslo systému Windows úpravou těchto nastavení registru.

Zde je návod, jak to funguje. Za prvé, protože úprava registru vyžaduje práva správce, budete muset pro svůj skript nastavit zvýšená oprávnění:

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

Nejprve spusťte dvě vstupní pole a zeptejte se uživatele, jaké uživatelské jméno a heslo má použít:

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

Dále nastavte objekt shellu a zapište tyto hodnoty do příslušných klíčů registru:

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

A to je všechno. Metoda 'RegWrite' vám ​​umožňuje zapsat libovolnou hodnotu do libovolného klíče registru pomocí skriptu VB Windows. Jediné, co musíte vědět, je příslušná cesta.

Spusťte skript a odpovězte na výzvy.

Hodnoty, které zadáte, budou vloženy přímo do nastavení registru, které jste nastavili ve skriptu.

Pohrajte si se scénářem a upravte jej podle svých představ. Můžete upravit libovolné klíče registru, které se vám líbí, buďte tedy kreativní!

4. Obnovte síťové připojení

Resetování síťového připojení pomocí skriptování VB je něco, o čem jsme se již zmínili zde na MakeUseOf. Následující verze je ve skutečnosti zmenšená a implementace je mnohem jednodušší. Namísto výzvy pro jednotlivé síťové karty resetuje všechna vaše aktivní připojení, což by snad vyřešilo případné problémy se sítí.

Stejně jako u ostatních skriptů, které vyžadují práva správce, budete muset přidat sekci na začátek pro zvýšená oprávnění. Zkopírujte tento kód ze skriptu výše.

Dále vytvořte objekt WMI a požádejte jej o seznam povolených síťových adaptérů ve vašem systému:

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

Nakonec projděte všechny povolené adaptéry a resetujte je:

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

Tím se resetují všechny vaše aktivní síťové adaptéry , což je často nejrychlejší způsob, jak vyřešit nepříjemné problémy se sítí. Mějte tento skript po ruce a vyzkoušejte jej vždy, když máte pomalou síť nebo jiné podivné problémy se sítí.

5. Zařízení ping nebo webové stránky

Nakonec jsem uložil svůj oblíbený skript VB Windows. To je ten, který jsem ve skutečnosti nastavil jako naplánovaný úkol na svém domácím počítači a nechal jej spustit několikrát denně, abych zkontroloval, zda je můj web aktivní. Mám skript e -mailem, pokud je stránka mimo provoz. Stejný skript můžete použít ke sledování důležitých serverů nebo počítačů ve vaší síti a odesílání e -mailů kdykoli váš skript nemůže pingovat zařízení.

Nejprve nastavte skript pro cíl, který chcete pingovat, vytvořte objekt shellu a poté spusťte příkaz ping.

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

Pomocí příkazu Select Case projděte výsledky Ping a odpovídajícím způsobem reagujte. Pokud se výsledky vrátí jako nula, pak víte, že web (nebo server) je online a nemusíte nic dělat. Pokud vrátí '1', ping se nezdařil a musíte něco udělat. V mém případě posílám e -mail pomocí objektu Windows CDO:

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

Jakmile se skript spustí a nemůže pingovat na zařízení nebo web, dostanete okamžitou zprávu.

Je to rychlé a snadné a každé efektivní!

Ovládání počítače pomocí skriptů VB Windows

Toto je jen několik příkladů některých skvělých věcí, které můžete pomocí skriptování VB zefektivnit používání počítače. Existuje spousta dalších věcí, které můžete dělat, například automatické zálohování pomocí VB a Synctoy, automatizace příkazů telnetu nebo dokonce otevírání a ovládání oken aplikací.

Jaké jsou některé věci, které jste ve svém počítači zautomatizovali pomocí skriptu Windows? Píšete své pomocí VB, nebo používáte nějaký jiný nástroj jako PowerShell ?

Podíl Podíl tweet E-mailem Zde je důvod, proč FBI vydala varování pro ransomware Hive

FBI vydala varování před obzvláště ošklivým kmenem ransomwaru. Zde je důvod, proč byste si měli dávat pozor zejména na ransomware Hive.

Číst dále
Související témata
  • Programování
  • Počítačová automatizace
  • Skriptování
O autorovi Ryan Dube(942 publikovaných článků)

Ryan má bakalářský titul z elektrotechniky. Pracoval 13 let v automatizačním inženýrství, 5 let v IT a nyní je Apps Engineer. Bývalý vedoucí redaktor MakeUseOf hovořil na národních konferencích o vizualizaci dat a vystupoval v národní televizi a rozhlase.

Více od Ryana Dubeho

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru