vbs指令碼大全,配有執行個體 DOS命令,批處理 指令碼 代碼
來源:互聯網
上載者:User
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