當前位置:編程學習大全網 - 編程語言 - VBS詳細教程

VBS詳細教程

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

  • 上一篇:編程和高中生文化課有什麽聯系?最好是壹片議論文
  • 下一篇:機器人傳感器的作用是什麽?
  • copyright 2024編程學習大全網