VBS經常使用腳本及其解說一覽

取得本機IP
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery("Select IPAddress from
Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For Each strAddress in IPConfig.IPAddress
WScript.Echo strAddress
Next
End If
Next
2 取得本機計算機名
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")
For Each objComputer in colComputers
Wscript.Echo objComputer.Name
Next
4 檢查升級包
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
Wscript.Echo objOperatingSystem.ServicePackMajorVersion & "." &
objOperatingSystem.ServicePackMinorVersion
Next
5 檢查 Hot Fix
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colQuickFixes = objWMIService.ExecQuery ("Select * from Win32_QuickFixEngineering")
For Each objQuickFix in colQuickFixes
Wscript.Echo "Description: " & objQuickFix.Description
Wscript.Echo "Hot Fix ID: " & objQuickFix.HotFixID
Next
6 檢查本地管理員數目
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators,group")
For Each objUser in objGroup.Members
Wscript.Echo objUser.Name
Next
7 磁盤系統
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk Where DriveType =
3")
For Each objDisk in colDisks
Wscript.Echo "Disk drive: "& objDisk.DeviceID & " -- " & objDisk.FileSystem
Next
8 檢測自動登陸是否開啓
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "AutoAdminLogon"
objReg.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName,dwValue
If dwValue = 1 Then
Wscript.Echo "Auto logon is enabled."
Else
Wscript.Echo "Auto logon is disabled."
End If
9 關閉自動登陸
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "AutoAdminLogon"
dwValue = 0
oReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue
10 檢查Guest是否禁用
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objUser = GetObject("WinNT://" & strComputer & "/Guest")
If objUser.AccountDisabled Then
Wscript.Echo "The Guest account is disabled."
Else
Wscript.Echo "The Guest account is enabled."
End If
11 關閉Guest
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objUser = GetObject("WinNT://" & strComputer & "/Guest")
If objUser.AccountDisabled Then
Wscript.Echo "The Guest account is already disabled."
Else
objUser.AccountDisabled = True
objUser.SetInfo
Wscript.Echo "The Guest account has been disabled."
End If
12 檢索本地共象
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colShares = objWMIService.ExecQuery("Select * from Win32_Share")
For each objShare in colShares
Wscript.Echo "Name: " & objShare.Name
Wscript.Echo "Path: " & objShare.Path
Wscript.Echo "Type: " & objShare.Type
Next
13 腳本檢索一個文件夾下.txt文件 汗哦 值得學習
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colFiles = objWMIService.ExecQuery("SELECT * FROM CIM_DataFile WHERE Path = '\\Documents
and Settings\\Administrator\\桌面\\' AND Drive = 'E:' AND Extension = 'txt'")
Wscript.Echo "Number of .txt files found: " & colFiles.Count
for each aa in colFiles
NL=NL & vbcrlf & aa.name
next
Wscript.Echo NL
14 我如何向用戶顯示一個用來選擇文件的對話框?
問:
嗨,Scripting Guy!有沒有什麼方法可讓我使用腳本向用戶顯示一個對話框,供用戶選擇文件使用?
-- BF
答:
您好,BF。若是您使用的是 Windows 2000,咱們不知道實現此操做的方法,至少操做系統中沒有內置這
樣的方法。但若是您使用的是 Windows XP,狀況就不一樣了。在 Windows XP 上,您可使用
「UserAccounts.CommonDialog」對象向用戶顯示一個標準的「文件打開」對話框。能夠用相似如下代碼
的腳本:
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "All Files|*.*" objDialog.InitialDir = "C:\" intResult =
objDialog.ShowOpen
If intResult = 0 Then Wscript.Quit Else Wscript.Echo objDialog.FileName End If
這是一個小腳本,因此讓咱們逐行進行解釋吧。咱們首先建立一個對 UserAccounts.CommonDialog 對象
的對象引用(名爲「objDialog」)。接着,咱們設置對話框的「篩選」屬性。咱們要顯示全部文件,所
以咱們將篩選設置成這樣:
objDialog.Filter = "All Files|*.*"
假如咱們只想顯示文本文件,那該怎麼辦?在這種狀況下,咱們將使用如下篩選:
objDialog.Filter = "Text Files|*.txt"
您也許可以看出它是如何運行的:咱們爲文件類型提供說明 (Text Files),而後插入一個豎線分隔符
(|),最後使用標準的通配符來指示全部 .txt 文件 (*.txt)。是否是想默認顯示 .txt 文件,而後爲用
戶提供查看全部文件的選項?那麼可使用如下代碼:
objDialog.Filter = "Text Files|*.txt|All Files|*.*"
試一試,您就明白咱們的意思了。
而後,咱們指定默認文件夾。默認狀況下,咱們但願對話框顯示位於驅動器 C 的根文件夾中的文件,所
以咱們這樣設置「InitialDir」屬性:
objDialog.InitialDir = "C:\"
但願顯示 C:\Windows 文件夾中的文件嗎?那麼可使用如下代碼:
objDialog.InitialDir = "C:\Windows"
沒必要擔憂:這是一個真正的「文件打開」對話框,因此您能夠隨意單擊,而且能夠隨時停下來。您從
C:\Windows 開始並不意味着您只能打開該文件夾中的文件。
最後,咱們使用下面這行代碼顯示對話框:
intResult = objDialog.ShowOpen
如今,咱們只需坐下來,等待用戶選擇文件並單擊「肯定」(或者等待用戶單擊「取消」)。若是用戶單
擊「取消」,則變量 intResult 將被設置爲 0。在咱們的腳本中,咱們檢查 intResult 的值,若是是 0
,咱們將只須要使用 Wscript.Quit 來終止此腳本。
可是若是用戶實際上選擇了文件並單擊了「肯定」,那該怎麼辦?在這種狀況下,intResult 將被設置爲
-1,「FileDialog」屬性將被設置爲所選文件的路徑名。咱們的腳本只回顯路徑名,這意味着咱們將獲得
相似如下內容的輸出:
C:\WINDOWS\Prairie Wind.bmp
不用說,您並不侷限於只回顯文件路徑。實際上,您可使用 WMI、FileSystemObject 或一些其餘技術
來綁定該文件,而後對其執行刪除、複製、壓縮或檢索文件屬性等操做 — 您對文件可以執行的操做差不
多均可以對它執行。
但不管如何,您都須要使用腳本。
順便說一句,使用此方法,您一次只能選擇一個文件,而不能按住「Ctrl」鍵選擇多個文件。有一種方法
能夠選擇多個文件,至少在 XP 計算機上能夠,可是咱們只能將此問題留到之後的專欄中討論了。
15 我如何肯定進程是在哪一個賬戶下運行的?
問:
嗨,Scripting Guy!我有一個腳本,它返回關於計算機上運行的全部進程的信息,只是我不知道如何獲
得這些進程在其下運行的用戶賬戶的名稱。您能夠幫助我嗎?
-- DL
答:
您好,DL。是的,咱們能夠幫助您。肯定進程是在哪一個賬戶下運行的,實際上至關簡單,只是如何着手執
行此操做並非特別顯而易見的。若是您與大多數人同樣,那麼您可能會經過掃描 Win32_Process 類的
屬性來查找名爲 Account 或 UserName 或相似的屬性。您頗有可能找不到。出現這種狀況的緣由是:
Win32_Process 沒有能夠告訴您進程在哪一個賬戶下運行的屬性。
您須要使用「GetOwner」方法來捕捉此信息。下面這個腳本能夠告訴您 Microsoft Word (Winword.exe)
在哪一個賬戶下運行:
strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process Where Name =
'Winword.exe'")
For Each objProcess in colProcessList objProcess.GetOwner strUserName, strUserDomain
Wscript.Echo "Process " & objProcess.Name & " is owned by " _ & strUserDomain & "\" &
strUserName & "."Next
咱們最感興趣的是下面這行代碼:
objProcess.GetOwner strNameOfUser, strUserDomain
咱們在此所作的就是調用「GetOwner」方法。GetOwner 返回兩個「輸出參數」,一個返回負責該進程的
用戶的名稱,一個返回該用戶所屬的域。爲捕獲這兩個輸出參數,咱們須要爲 GetOwner 方法提供兩個變
量。在這個示例腳本中,咱們使用了兩個分別叫作 strUserName 和 strUserDomain 的變量。名稱能夠隨
意選擇;您能夠將變量稱爲 A 和 B 或 X 和 Y 或任何其餘您想要的名稱。
不過,變量的順序不能隨意設置:返回的第一個值老是用戶名,第二個值老是域。這意味着,若是您但願
用 X 表示用戶名,用 Y 表示域,那麼您要確保您的代碼像下面這行代碼同樣:
objProcess.GetOwner X, Y
調用 GetOwner 以後,咱們就可直接回顯進程名和全部者。請注意,咱們能夠稍微來點兒花樣兒 – 使用
域\用戶格式。這樣,咱們就能夠回顯相似於「fabrikam\kenmyer」的名稱。
下面附帶提供了另外一個腳本,該腳本能夠列出計算機上的全部進程以及各個進程的全部者:
strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process")
For Each objProcess in colProcessList objProcess.GetOwner strUserName, strUserDomain
Wscript.Echo "Process " & objProcess.Name & " is owned by " _ & strUserDomain & "\" &
strUserName & "."Next
可能有人感到奇怪,2005 年 1 月 3 日正好是 Microsoft 員工的正式休息日。那麼今天爲何會有「嗨
,Scripting Guy!」專欄?這隻能是因爲 Microsoft 腳本專家表現出來的對工做的難以置信的奉獻和投
入精神。或者,也多是因爲某個腳本專家 – 還說不出他或她的名字 – 沒有意識到今天是假日,因此
照常來了(並且是在早上 7 點啊!)。
16 能夠將腳本的輸出複製到剪貼板嗎?
問:
嗨,Scripting Guy!有辦法將腳本輸出複製到剪貼板嗎?
-- ZW, Marseilles, France
答:
您好,ZW.若是您不介意用一些瘋狂的解決方法,那麼實際上將腳本輸出複製到剪貼板至關容易。首先,
您須要構造一個字符串,其中包含想要的輸出。而後,建立 Internet Explorer 的一個實例,而後在其
中打開一個空白頁。接着,利用 Internet Explorer 對象模型的內置功能,將字符串複製到剪貼板;特
別是, 可使用 clipboardData.SetData 方法來實現這個技巧。將某些數據複製到剪貼板的示例腳本如
下:
strCopy = "This text has been copied to the clipboard."
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.document.parentwindow.clipboardData.SetData "text", strCopy
objIE.Quit
運行腳本,而後打開 Notepad,而後單擊「粘貼」;應該能夠看到所複製的字符串。
順便說一下,全部這一切都是在「幕後」發生的,Internet Explorer 並不會真的出如今屏幕上。這是因
爲,在默認狀況下,經過腳本建立的任何 IE 實例在運行時都是隱藏的,除非您利用以下語句將其顯示出
來:
objIE.Visible = True 學習


 歡迎加入QQ技術羣聊:70539804ui

相關文章
相關標籤/搜索