コンピュータの使用を自動化するための5つの便利なVBWindowsスクリプト

コンピュータの使用を自動化するための5つの便利なVBWindowsスクリプト

ITアナリストであろうと、通常のコンピューターユーザーであろうと、PCで頻繁に実行する必要のあるタスクはたくさんあります。 VBスクリプトは、コンピューターハードウェアに関する重要な情報の取得から、サービスの停止と開始、ネットワークカードのリセットまで、あらゆることを実行できるWindowsスクリプトとして機能するVisualBasicプログラムを縮小したものです。





これらの個々のことをすべて通常の方法で行う方法、またはバッチファイルを使用して行う方法を学ぶことができます。しかし VBスクリプトはバッチスクリプトよりも優れています 彼らはより柔軟だからです。次のスクリプトを、必要なときにすぐにアクセスできる共通の場所に保存すると、これらのタスクを短時間で実行できます。スクリプトをダブルクリックしてプロンプトに答えるだけで、タスクは完了です。





次のVBWindowsスクリプトを見て、使用したいスクリプトがあれば、スクリプトをコピーしてに貼り付けてください。 メモ帳またはその他のコーディングメモツール そしてそれをWSFファイルとして保存します。





Windowsスクリプトを準備する

以下に詳述する各スクリプトは、ファイルに.WSF拡張子を付け、コードを次のように囲んでいる限り、ダブルクリックするだけで実行されます。


そして、次のコードでコードを閉じます。



WScript.Quit

これにより、Windowsはスクリプトが記述されている言語を認識し、適切に処理します。

1.コンピューター情報にWindowsスクリプトを使用する

Windowsは、WMIまたはWindows Management Instrumentationと呼ばれるものを提供します。これは、オペレーティングシステムのコンポーネントにアクセスするためのインターフェイスをスクリプトに提供します。実際にWMIに対してクエリを実行して、システムに関する現在のライブ情報を取得できます。マイクロソフトは、すべての完全なリストを提供しています クエリのカテゴリ あなたはシステムに対して作ることができます。





VBAを使用してコンピューター情報をExcelに取り込む方法については説明しましたが、Excelの外部で単純なVBスクリプトを使用して同じことを行うことができます。

この例では、プロセッサ情報(ファミリ、製造元、およびコアの数)、バッテリ情報(説明とステータス)、および論理ディスク情報(名前、残りの空き領域、および全体のサイズ)についてシステムにクエリを実行します。次に、このすべての情報をCSVファイルに出力して見やすくします。





最初のステップは、CSVファイルへの出力に使用するFileSystemObjectを設定し、ファイルを作成することです。

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

次の手順は、WMIクエリを設定して実行することです。

Photoshopで写真の背景を変更する
strQuery = 'SELECT Family,Manufacturer,NumberOfCores FROM Win32_Processor'
Set colResults = GetObject('winmgmts://./root/cimv2').ExecQuery( strQuery )

最後に、結果を並べ替えて、CSVファイルに情報を出力します。派手になりたい場合は、出力ファイルの見栄えを良くするために、この前に数行を付けてください。

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

ここでコードを実行すると、出力は次のようになります。

コードの次の2つのセクションでは、クエリを繰り返して変更し、追加情報を探します。バッテリー情報のクエリは次のとおりです。

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

そして、論理ディスククエリの次のセクションは次のとおりです。

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

最後に、ファイルを閉じてオブジェクトを「Nothing」に設定することにより、コードを閉じることを忘れないでください。

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

そのすべてのコードを新しい.WSFファイルに入れて実行すると、出力は次のようになります。

上記のクエリを、情報を取得したい他のコンピュータデバイスまたはソフトウェアと交換するだけで、マウスをクリックするだけで、いつでも完全なシステムレポートを取得できます。

2.サービスの停止と開始

特定のサービスに問題があり、正常に実行を再開するには、すばやく再起動する必要がある場合があります。これは特に ITに当てはまる 時々少しバグがあるサーバーソフトウェアを実行することを余儀なくされたとき。

サービスの再起動プロセスを1分ほど短縮したい場合は、次のスクリプトを便利な場所に保存してください。再起動するサービスの名前を入力するように求められ、それが正確に実行されます。

サービスの停止と開始には管理者権限が必要なため、スクリプトを提供するには、スクリプトの先頭に次のコードを配置する必要があります 昇格された特権

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

これが完了したら、残りのコードを追加してユーザー入力用の入力ボックスを実行し、コマンドウィンドウを起動して、「netstop」および「netstartcommands」を送信します。

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

これですべてです。サービスツールを探し回る必要はありません。このスクリプトを実行し、サービスを数秒で停止して開始するだけです。

3.レジストリ設定、デフォルトの管理者パスワードを変更します

次のスクリプトを使用して、1つの石で2羽の鳥を殺します。このスクリプトは、その方法を示します レジストリを編集する VBスクリプトを使用します。また、これらのレジストリ設定を編集することにより、デフォルトのWindowsユーザー名とパスワードを設定できるスクリプトも提供します。

仕組みは次のとおりです。まず、レジストリの編集には管理者権限が必要なため、スクリプトに昇格された権限を設定する必要があります。

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

最初に2つの入力ボックスを実行して、使用するユーザー名とパスワードをユーザーに尋ねます。

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

次に、シェルオブジェクトを設定し、それらの値を適切なレジストリキーに書き込みます。

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

そして、それがすべてです。 'RegWrite'メソッドを使用すると、VBWindowsスクリプトを使用して任意のレジストリキーに任意の値を書き込むことができます。あなたが知る必要があるのは適切な道です。

スクリプトを実行し、プロンプトに答えます。

入力した値は、スクリプトで設定したレジストリ設定に直接挿入されます。

スクリプトをいじって、好みに合わせて調整してください。好きなレジストリキーを編集できるので、創造力を発揮してください。

4.ネットワーク接続をリセットします

VBスクリプトを使用してネットワーク接続をリセットすることは、これまでMakeUseOfで説明したことです。これの次のバージョンは実際には縮小されており、実装がはるかに簡単です。個々のネットワークカードの入力を求める代わりに、アクティブな接続をすべてリセットします。これにより、発生している可能性のあるネットワークの問題が解決されることが期待されます。

管理者権限を必要とする他のスクリプトと同様に、昇格された権限のセクションを最初に追加する必要があります。上記のスクリプトからそのコードをコピーします。

次に、WMIオブジェクトを作成し、システムで有効になっているネットワークアダプターのリストを照会します。

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

最後に、有効になっているすべてのアダプターをループしてリセットします。

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

これにより、すべてがリセットされます アクティブなネットワークアダプタ 、これは多くの場合、迷惑なネットワークの問題を解決するための最速の方法です。このスクリプトを手元に置いて、ネットワークの速度が遅い場合やその他の奇妙なネットワークの問題が発生した場合は、最初に試してください。

5.デバイスまたはWebサイトにpingを実行します

最後に、お気に入りのVBWindowsスクリプトを保存しました。これは、実際に自宅のコンピューターでスケジュールされたタスクとして設定し、Webサイトがアクティブかどうかを確認するためだけに1日に数回実行するものです。サイトがダウンしている場合は、スクリプトからメールを受け取ります。これと同じスクリプトを使用して、ネットワーク上の重要なサーバーまたはコンピューターを監視し、スクリプトがデバイスにpingできないときはいつでも自分に電子メールを送信できます。

まず、pingを実行するターゲットのスクリプトを設定し、シェルオブジェクトを作成してから、pingコマンドを実行します。

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

Select Caseステートメントを使用して、Pingの結果を実行し、それに応じて応答します。結果がゼロに戻った場合は、サイト(またはサーバー)がオンラインであり、何もする必要がないことがわかります。 「1」が返される場合は、pingが失敗しているため、何かを行う必要があります。私の場合、WindowsCDOオブジェクトを使用して電子メールを送信します。

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

スクリプトが実行され、デバイスまたはWebサイトにpingできないと、インスタントメッセージが表示されます。

それは迅速かつ簡単で、すべて効率的です!

VBWindowsスクリプトを使用してコンピューターを制御する

これらは、コンピューターの使用を合理化するためにVBスクリプトで実行できるいくつかの優れた例のほんの一例です。 VBとSynctoyを使用した自動バックアップ、telnetコマンドの自動化、さらにはアプリケーションウィンドウを開いて制御するなど、他にもたくさんのことができます。

Windowsスクリプトを使用してコンピューターで自動化したものにはどのようなものがありますか? VBを使用して作成しますか、それとも他のツールを使用しますか PowerShellのように

共有 共有 つぶやき Eメール FBIがHiveランサムウェアに対して警告を発した理由は次のとおりです

FBIは、特に厄介なランサムウェアについて警告を発しました。これが、Hiveランサムウェアに特に注意する必要がある理由です。

次を読む
関連トピック
  • プログラミング
  • コンピューターの自動化
  • スクリプティング
著者について ライアン・デューブ(942件の記事が公開されました)

ライアンは電気工学の理学士号を取得しています。彼は自動化エンジニアリングで13年間、ITで5年間働いており、現在はアプリエンジニアです。 MakeUseOfの元編集長であり、データの視覚化に関する全国会議で講演され、全国のテレビやラジオで取り上げられました。

RyanDubeのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください