VBS经典代码大全.docx
《VBS经典代码大全.docx》由会员分享,可在线阅读,更多相关《VBS经典代码大全.docx(82页珍藏版)》请在冰豆网上搜索。
VBS经典代码大全
VBS代码片断大全[一]
1VBS
取得本机IP
strComputer="."
SetobjWMIService=GetObject("winmgmts:
\"&strComputer&"\root\cimv2")
SetIPConfigSet=objWMIService.ExecQuery("SelectIPAddressfrom
Win32_NetworkAdapterConfigurationWhereIPEnabled=TRUE")
ForEachIPConfiginIPConfigSet
IfNotIsNull(IPConfig.IPAddress)Then
ForEachstrAddressinIPConfig.IPAddress
WScript.EchostrAddress
Next
EndIf
Next
--------------------------------------------------------------------------------
2取得本机计算机名
strComputer="."
SetobjWMIService=GetObject("winmgmts:
\"&strComputer&"\root\cimv2")
SetcolComputers=objWMIService.ExecQuery("Select*fromWin32_ComputerSystem")
ForEachobjComputerincolComputers
Next
--------------------------------------------------------------------------------
4检查升级包
strComputer="."
SetobjWMIService=GetObject("winmgmts:
\"&strComputer&"\root\cimv2")
SetcolOperatingSystems=objWMIService.ExecQuery("Select*from
Win32_OperatingSystem")
ForEachobjOperatingSystemincolOperatingSystems
Wscript.EchoobjOperatingSystem.ServicePackMajorVersion&"."&
Next
--------------------------------------------------------------------------------
5检查HotFix
strComputer="."
SetobjWMIService=GetObject("winmgmts:
\"&strComputer&"\root\cimv2")
SetcolQuickFixes=objWMIService.ExecQuery("Select*from
Win32_QuickFixEngineering")
ForEachobjQuickFixincolQuickFixes
Wscript.Echo"Description:
"&objQuickFix.Description
Wscript.Echo"HotFixID:
"&objQuickFix.HotFixID
Next
--------------------------------------------------------------------------------
6检查本地管理员数目
SetobjNetwork=CreateObject("Wscript.Network")
strComputer=objNetwork.ComputerName
SetobjGroup=GetObject("WinNT:
//"&strComputer&"/Administrators,group")
ForEachobjUserinobjGroup.Members
Wscript.EchoobjUser.Name
Next
--------------------------------------------------------------------------------
7磁盘系统
strComputer="."
SetobjWMIService=GetObject("winmgmts:
\"&strComputer&"\root\cimv2")
SetcolDisks=objWMIService.ExecQuery("Select*fromWin32_LogicalDiskWhere
DriveType=3")
ForEachobjDiskincolDisks
Wscript.Echo"Diskdrive:
"&objDisk.DeviceID&"--"&objDisk.FileSystem
Next
--------------------------------------------------------------------------------
8检测自动登录是否开启
ConstHKEY_LOCAL_MACHINE=&H80000002
strComputer="."
SetobjReg=GetObject("winmgmts:
\"&strComputer&"\root\default:
StdRegProv")
strKeyPath="Software\Microsoft\WindowsNT\CurrentVersion\WinLogon"
strValueName="AutoAdminLogon"
objReg.GetDWORDValueHKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
IfdwValue=1Then
Wscript.Echo"Autologonisenabled."
Else
Wscript.Echo"Autologonisdisabled."
EndIf
--------------------------------------------------------------------------------
9关闭自动登录
ConstHKEY_LOCAL_MACHINE=&H80000002
strComputer="."
SetobjReg=GetObject("winmgmts:
\"&strComputer&"\root\default:
StdRegProv")
strKeyPath="Software\Microsoft\WindowsNT\CurrentVersion\WinLogon"
strValueName="AutoAdminLogon"
dwValue=0
oReg.SetDWORDValueHKEY_LOCAL_MACHINE,strKeyPath,strValueName,dwValue
-------------------------------------------------------------------------
10检查Guest是否禁用
SetobjNetwork=CreateObject("Wscript.Network")
strComputer=objNetwork.ComputerName
SetobjUser=GetObject("WinNT:
//"&strComputer&"/Guest")
IfobjUser.AccountDisabledThen
Wscript.Echo"TheGuestaccountisdisabled."
Else
Wscript.Echo"TheGuestaccountisenabled."
EndIf
-------------------------------------------------------------------------
11关闭Guest
SetobjNetwork=CreateObject("Wscript.Network")
strComputer=objNetwork.ComputerName
SetobjUser=GetObject("WinNT:
//"&strComputer&"/Guest")
IfobjUser.AccountDisabledThen
Wscript.Echo"TheGuestaccountisalreadydisabled."
Else
objUser.AccountDisabled=True
objUser.SetInfo
Wscript.Echo"TheGuestaccounthasbeendisabled."
EndIf
--------------------------------------------------------------------------------
12检索本地共象
strComputer="."
SetobjWMIService=GetObject("winmgmts:
\\"&strComputer&"\root\cimv2")
SetcolShares=objWMIService.ExecQuery("Select*fromWin32_Share")
ForeachobjShareincolShares
Wscript.Echo"Name:
"&objShare.Name
Wscript.Echo"Path:
"&objShare.Path
Wscript.Echo"Type:
"&objShare.Type
Next
--------------------------------------------------------------------------------
13脚本检索一个文件夹下.txt文件汗哦值得学习
SetobjWMIService=GetObject("winmgmts:
\\.\root\cimv2")
SetcolFiles=objWMIService.ExecQuery("SELECT*FROMCIM_DataFileWHEREPath=
'\\DocumentsandSettings\\Administrator\\桌面\\'ANDDrive='E:
'ANDExtension=
'txt'")
Wscript.Echo"Numberof.txtfilesfound:
"&colFiles.Count
foreachaaincolFiles
next
Wscript.EchoNL
作者:
60.13.134.*2005-4-2119:
39 回复此发言
--------------------------------------------------------------------------------
14我如何向用户显示一个用来选择文件的对话框?
问:
嗨,ScriptingGuy!
有没有什么方法可以让我使用脚本向用户显示一个对话框,供用户选择文件使用?
--BF
答:
您好,BF。
如果您使用的是Windows2000,我们不知道实现此操作的方法,至少操作系统中没有内置这样的方法。
但如果您使用的是Windows
XP,情况就不同了。
在WindowsXP
上,您可以使用“UserAccounts.CommonDialog”对象向用户显示一个标准的“文件打开”对话框。
可以用类似以下代码的脚本:
SetobjDialog=CreateObject("UserAccounts.CommonDialog")
objDialog.Filter="AllFiles|*.*"objDialog.InitialDir="C:
\"intResult=
IfintResult=0ThenWscript.QuitElseWscript.EchoobjDialog.FileNameEndIf
这是一个小脚本,所以让我们逐行进行解释吧。
我们首先创建一个对UserAccounts.CommonDialog
对象的对象引用(名为“objDialog”)。
接着,我们设置对话框的“筛选”属性。
我们要显示所有文件,所以我们将筛选设置成这样:
objDialog.Filter="AllFiles|*.*"
假如我们只想显示文本文件,那该怎么办?
在这种情况下,我们将使用以下筛选:
objDialog.Filter="TextFiles|*.txt"
您也许能够看出它是如何运行的:
我们为文件类型提供说明(TextFiles),然后插入一个竖线分隔符(|),最后使用标准的通配符来指示所有.txt文件
(*.txt)。
是不是想默认显示.txt文件,然后为用户提供查看所有文件的选项?
那么可以使用以下代码:
objDialog.Filter="TextFiles|*.txt|AllFiles|*.*"
试一试,您就明白我们的意思了。
然后,我们指定默认文件夹。
默认情况下,我们希望对话框显示位于驱动器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\PrairieWind.bmp
不用说,您并不局限于只回显文件路径。
实际上,您可以使用WMI、FileSystemObject
或一些其他技术来绑定该文件,然后对其执行删除、复制、压缩或检索文件属性等操作—您对文件能够执行的操作差不多都可以对它执行。
但无论如何,您都需要使用脚本。
顺便说一句,使用此方法,您一次只能选择一个文件,而不能按住“Ctrl”键选择多个文件。
有一种方法可以选择多个文件,至少在XP
计算机上可以,但是我们只能将此问题留到以后的专栏中讨论了。
--------------------------------------------------------------------------------
15我如何确定进程是在哪个帐户下运行的?
问:
嗨,ScriptingGuy!
我有一个脚本,它返回关于计算机上运行的所有进程的信息,只是我不知道如何获得这些进程在其下运行的用户帐户的名称。
您可以帮助我吗?
--DL
答:
您好,DL。
是的,我们可以帮助您。
确定进程是在哪个帐户下运行的,实际上相当简单,只是如何着手执行此操作并不是特别显而易见的。
如果您与大多数人一样,那么您可能会通过扫描
Win32_Process类的属性来查找名为Account或UserName
或类似的属性。
您很有可能找不到。
出现这种情况的原因是:
Win32_Process没有可以告诉您进程在哪个帐户下运行的属性。
您需要使用“GetOwner”方法来捕捉此信息。
下面这个脚本可以告诉您MicrosoftWord(Winword.exe)在哪个帐户下运行:
strComputer="."SetobjWMIService=GetObject("winmgmts:
\\"&strComputer&
"\root\cimv2")
SetcolProcessList=objWMIService.ExecQuery_("Select*fromWin32_Process
WhereName='Winword.exe'")
ForEachobjProcessincolProcessListobjProcess.GetOwnerstrUserName,
strUserDomainWscript.Echo"Process"&objProcess.Name&"isownedby"_&
strUserDomain&"\"&strUserName&"."Next
我们最感兴趣的是下面这行代码:
objProcess.GetOwnerstrNameOfUser,strUserDomain
我们在此所做的就是调用“GetOwner”方法。
GetOwner
返回两个“输出参数”,一个返回负责该进程的用户的名称,一个返回该用户所属的域。
为捕获这两个输出参数,我们需要为GetOwner
方法提供两个变量。
在这个示例脚本中,我们使用了两个分别叫做strUserName和strUserDomain的变量。
名称可以随意选择;您可以将变量称为
A和B或X和Y或任何其他您想要的名称。
不过,变量的顺序不能随意设置:
返回的第一个值总是用户名,第二个值总是域。
这意味着,如果您希望用X表示用户名,用Y
表示域,那么您要确保您的代码像下面这行代码一样:
objProcess.GetOwnerX,Y
调用GetOwner之后,我们就可直接回显进程名和所有者。
请注意,我们可以稍微来点儿花样儿–
使用域\用户格式。
这样,我们就可以回显类似于“fabrikam\kenmyer”的名称。
下面附带提供了另一个脚本,该脚本可以列出计算机上的所有进程以及各个进程的所有者:
strComputer="."SetobjWMIService=GetObject("winmgmts:
\\"&strComputer&
"\root\cimv2")
SetcolProcessList=objWMIService.ExecQuery_("Select*fromWin32_Process")
ForEachobjProcessincolProcessListobjProcess.GetOwnerstrUserName,
strUserDomainWscript.Echo"Process"&objProcess.Name&"isownedby"_&
strUserDomain&"\"&strUserName&"."Next
可能有人感到奇怪,2005年1月3日正好是Microsoft员工的正式休息日。
那么今天为什么会有“嗨,Scripting
Guy!
”专栏?
这只能是由于Microsoft脚本专家表现出来的对工作的难以置信的奉献和投入精神。
或者,也可能是由于某个脚本专家–还说不出他或她的名字
–没有意识到今天是假日,所以照常来了(而且是在早上7点啊!
)。
--------------------------------------------------------------------------------
16可以将脚本的输出复制到剪贴板吗?
问:
嗨,ScriptingGuy!
有办法将脚本输出复制到剪贴板吗?
--ZW,Marseilles,France
答:
您好,ZW.如果您不介意用一些疯狂的解决方法,那么实际上将脚本输出复制到剪贴板相当容易。
首先,您需要构造一个字符串,其中包含想要的输出。
然后,创建
InternetExplorer的一个实例,然后在其中打开一个空白页。
接着,利用InternetExplorer
对象模型的内置功能,将字符串复制到剪贴板;特别是,可以使用clipboardData.SetData
方法来实现这个技巧。
将某些数据复制到剪贴板的示例脚本如下:
strCopy="Thistexthasbeencopiedtotheclipboard."
SetobjIE=CreateObject("InternetExplorer.Application")
objIE.Navigate("about:
blank")
objIE.document.parentwindow.clipboardData.SetData"text",strCopy
运行脚本,然后打开Notepad,然后单击“粘贴”;应该可以看到所复制的字符串。
顺便说一下,所有这一切都是在“幕后”发生的,InternetExplorer并不会真的出现在屏幕上。
这是因为,在默认情况下,通过脚本创建的任何IE
实例在运行时都是隐藏的,除非您利用如下语句将其显示出来:
objIE.Visible=True
--------------------------------------------------------------------------------
17可以在运行脚本时修改当前命令窗口的标题吗?
问:
嗨,ScriptingGuy!
在我运行一个批文件的时候,可以使用Title命令修改命令窗口的标题。
我可以在脚本中修改命令窗口的标题吗?
--AA,Yokohama,Japan
答:
你好,AA.可以。
只要您愿意打开一个新的命令窗口。
如果您愿意,可以使用类似下面的这些代码: