無論您是IT分析師還是普通計算機用戶,都可能需要經常在PC上執行許多任務。VB腳本是按比例縮小的Visual Basic程序,用作Windows腳本,可以執行任何操作,從調出有關計算機硬件的重要信息,到停止和啟動服務或重置網絡卡片。
可以學習如何以正常的方式完成所有這些單獨的事情,或者使用批處理文件來完成它們。但是VB腳本比批處理腳本好,因為它們更靈活。如果您將以下腳本存儲在一個公共位置,以便在需要時快速到達,那麼您可以在很短的時間內完成這些任務。您只需雙擊腳本,回答一個提示,任務就完成了。
看看下面的vbwindows腳本,如果你看到任何你想使用的,只要複製並粘貼到記事本或其他編碼筆記工具的腳本,並保存為WSF文件。
只要您用.WSF擴展名命名了文件,下面詳細描述的每個腳本都將只需雙擊即可運行,並且您還將代碼從以下開始括起來:
<job><script language="VBScript">並用以下代碼結束代碼:
WScript.Quit</script></job>這可以確保Windows能夠識別腳本所用的語言,並正確地處理它。
Windows提供了稱為WMI或Windows Management Instrumentation的東西,它為腳本提供了訪問操作系統組件的接口。實際上,您可以對WMI運行查詢,以獲取有關係統的當前實時信息。Microsoft提供了您可以對系統進行的所有查詢類別的完整列表。
我們已經介紹瞭如何使用VBA將計算機信息拉入Excel,但是您可以使用Excel之外的簡單VB腳本來完成同樣的操作。
在本例中,我們將查詢系統中的處理器信息(系列、**商和核心數)、電池信息(描述和狀態)和邏輯磁盤信息(名稱、剩餘可用空間和總體大小)。然後我們將所有這些信息輸出到一個CSV文件中,以便於查看。
第一步是設置用於輸出到CSV文件的FileSystemObject,並創建文件:
Set oFSO = CreateObject("Scripting.FileSystemObject")sFile1 = "MyComputerInfo.csv"Set oFile1 = oFSO.CreateTextFile(sFile1, 1)下一步是設置WMI查詢並執行它:
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 strResultsNext如果現在運行代碼,則輸出如下:
在接下來的兩段代碼中,您只需重複並更改查詢以查找附加信息。以下是電池信息查詢:
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 strResultsNext下面是邏輯磁盤查詢的下一節:
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 SpaceFor 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 strResultsNext最後,記住通過關閉文件並將對象設置為“Nothing”來關閉代碼:
oFile1.CloseSet oFile1 = Nothingset colResults = NothingstrResults = ""將所有代碼放入新的.WSF文件中,運行它,您的輸出如下所示:
只需將上面的查詢交換為您想要獲取信息的任何其他計算機設備或軟件,您只需單擊鼠標即可隨時獲得完整的系統報告。
有時某些服務會出現問題,需要快速重啟才能重新正常運行。當您被迫運行有時有點缺陷的服務器軟件時,尤其如此。
如果您想在服務重啟過程中節省一分鐘左右的時間,只需將下面的腳本存儲在一些方便的地方。它將提示您輸入要重新啟動的服務的名稱,然後它將完全這樣做。
由於停止和啟動服務需要管理權限,因此需要將以下代碼放在腳本的開頭,以賦予腳本提升的權限:
If Not WScript.Arguments.Named.Exists("elevate") Then CreateObject("Shell.Application").ShellExecute WScript.FullName _ , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1 WScript.QuitEnd If完成後,添加其餘代碼以運行用戶輸入的輸入框,啟動命令窗口,並向其發送“net stop”和“net start commands”:
Set cmdShell = CreateObject("WScript.Shell")strServiceName=Inputbox("Inter Service to Stop","Input Required")cmdShell.Run "cmd.exe"WScript.Sleep 1000cmdShell.SendKeys "net stop "+strServiceNamecmdShell.SendKeys "{Enter}"WScript.Sleep 1000cmdShell.SendKeys "net start "+strServiceNamecmdShell.SendKeys "{Enter}"WScript.Sleep 1000cmdShell.SendKeys "Exit"cmdShell.SendKeys "{Enter}"就這些。不需要到處尋找服務工具。只需運行這個腳本,並在幾秒鐘內停止和啟動任何服務。
按照下面的劇本,我們將一石二鳥。這個腳本將向您展示如何用VB腳本編輯註冊表。它還將為您提供一個腳本,允許您通過編輯這些註冊表設置來設置默認的Windows用戶名和密碼。
下面是它的工作原理。首先,由於編輯註冊表需要管理員權限,因此需要為腳本設置提升的權限:
If Not WScript.Arguments.Named.Exists("elevate") Then CreateObject("Shell.Application").ShellExecute WScript.FullName _ , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1 WScript.QuitEnd If首先運行兩個輸入框,詢問用戶要使用的用戶名和密碼:
strUserName=Inputbox("Enter the default User Name","Input Required")strPassword=Inputbox("Enter the default Password","Input Required")接下來,設置shell對象,並將這些值寫入相應的註冊表項:
Set wshShell = CreateObject( "WScript.Shell" )wshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName", strUserName, "REG_SZ"wshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword", strPassword, "REG_SZ"Set wshShell = Nothing就這些。“RegWrite”方法允許您使用vbwindows腳本將任何值寫入任何註冊表項。你所要知道的就是正確的道路。
運行腳本並回答提示。
輸入的值將直接**腳本中設置的註冊表設置中。
發揮周圍的腳本和調整它到你喜歡的。你可以編輯任何你喜歡的註冊表項,所以要有創意!
使用VB腳本重置網絡連接是我們在MakeUseOf之前所討論的。下面的版本實際上是縮小的,實現起來簡單得多。它不會提示單個網卡,而是重置所有活動連接,希望這些連接能夠解決您可能存在的任何網絡問題。
與其他需要管理員權限的腳本一樣,您需要在提升權限的開始處添加節。從上面的腳本複製代碼。
接下來,創建WMI對象並查詢它以獲得系統上已啟用的網絡適配器列表:
strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "oot\CIMV2")Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_NetworkAdapter Where NetEnabled = 'True'")最後,遍歷所有啟用的適配器並重置它們:
For Each objItem in colItems objItem.Disable WScript.Sleep 1000 objItem.EnableNext這將重置所有活動的網絡適配器,這通常是解決惱人的網絡問題的最快方法。把這個腳本放在手邊,當你有一個緩慢的網絡或其他奇怪的網絡問題時,請先嚐試它。
我把最喜歡的vbwindows腳本保存到最後。這是一個我實際上設置為一個預定的任務在我的家用電腦上,並有它運行幾次,每天只是為了檢查我的網站是否是活躍的。我有腳本電子郵件給我,如果網站關閉。您可以使用此腳本監視網絡上的重要服務器或計算機,並在腳本無法ping設備時向自己發送電子郵件。
首先,為要ping的目標設置腳本,創建shell對象,然後運行ping命令。
strTarget = "topsecretwriters.com"Set WshShell = WScript.CreateObject("WScript.Shell")Ping = WshShell.Run("ping -n 1 " & strTarget, 0, True)使用Select Case語句遍歷Ping結果並做出相應的響應。如果結果返回為零,那麼您就知道站點(或服務器)處於聯機狀態,您無需執行任何操作。如果它返回“1”,那麼ping失敗,您需要做些什麼。在我的例子中,我使用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/**tpusessl") = True .Item ("http://schemas.microsoft.com/cdo/configuration/**tpauthenticate")=1 .Item ("http://schemas.microsoft.com/cdo/configuration/sendusername")="[email protected]" .Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword")="xxxxxxxxxxxxxxxxx" .Item ("http://schemas.microsoft.com/cdo/configuration/**tpserver")="**tp.gmail.com" .Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2 .Item ("http://schemas.microsoft.com/cdo/configuration/**tpserverport")=465 .Update End With With objMessage Set .Configuration = objConfig .Subject = "Your site is offline" .From = "[email protected]" .To = "[email protected]" .TextBody = "Hey, your website is offline." .Send End WithEnd Select一旦腳本運行並且無法ping設備或網站,就會收到一條即時消息。
它的快速和簡單,每一個有效的!
這些只是一些很酷的例子,你可以用VB腳本來簡化你的計算機使用。你還可以做很多其他的事情,比如用VB和Synctoy自動備份,自動執行telnet命令,甚至打開和控制應用程序窗口。
您在計算機上使用Windows腳本自動完成的一些事情是什麼?你是用VB寫的,還是使用其他工具,比如PowerShell?
...和實體框架。它們在構建桌面、移動和web應用程式時非常有用。PHP可以使網站動態化,因此可以根據各種情況改變頁面內容。PHP和.NET的主要區別在於,PHP是一種伺服器端指令碼語言,.NET是Microsoft構建的主要在Windows上執行的軟體...
... 讓我們看看如何用指令碼自動加密Windows10中的檔案。 ...
...s10引入了虛擬桌面,這是一種為不同任務設定不同環境的有用方法。此功能使您可以輕鬆地組織工作區。但是,在不同的桌面之間切換可能比簡單的Alt標籤更難操作。 ...
全新的Windows安裝感覺棒極了。無論您選擇方便的重置還是從頭開始重新安裝Windows,請記住備份所有資料。別忘了包括你想重新安裝的程式的序列號和產品金鑰。 ...
以前,很少有方法可以控制Windows計算機上的音量。然而,windows10在智慧**、遠端桌面連線、不同的軟體修復等方面表現良好。現在在windows10中控制音量的方法比以往任何時候都多。 ...
...要的一點是,您可以使用強大的Google指令碼建立一些非常有用的自動化。 ...
...的程式設計術語通常涉及其他易混淆的術語,此方法尤其有用。學習程式設計時不要給自己太大壓力,這一點很重要。 ...
是否要在Windows或Mac計算機上自動將檔案從一個資料夾移動到另一個資料夾?嗯,在這兩種型別的電腦上都可以很容易地做到。 ...
...將找到不明確的條目部分。在這裡,作者收集了一些可能有用但並不總是很清楚的修復;因此,它們被註釋掉了。 ...