vbs脚本大全

vbs脚本大全ide

1. 取得本机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  ui


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  .net


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  htm


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  ip


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  ci


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

17. 运行bat时隐藏cmd窗口的方法 能够编辑一个vbs脚本,在其中以隐藏窗口运行批处理程序。
复制代码 代码以下:

Set ws = CreateObject("Wscript.Shell")
ws.run "cmd /c 批处理程序名",vbhide

代码以下:

Set ws = CreateObject("Wscript.Shell")
wscript.sleep 1200 ws.run "cmd /c start winrar.exe",vbhide
wscript.sleep 2200 ws.run "cmd /c start msimn.exe",vbhide
wscript.sleep 1200 ws.run "cmd /c start iexplore.exe",vbhide

on error resume next
Set objArgs=WScript.Arguments
For I=0 to objArgs.Count-1
strArgs=objArgs(I)
if strArgs<>"" then HideRun(strArgs)
Next
function HideRun(h)
set oWSl=WScript.CreateObject("WScript.Shell")
rtn=oWSl.run(h,0,false)
end function

18. Wscript.Shell 对象详细介绍

http://www.jb51.net/article/5683.htm