VBS获取本机IP
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery("从 Win32_NetworkAdapterConfiguration 中选择 IPAddress,其中IPEnabled=TRUE")
对于 IPConfigSet 中的每个 IPConfig
如果不是 IsNull(IPConfig.IPAddress) 则
对于 IPConfig.IPAddress 中的每个 strAddress
>WScript.Echo strAddress
Next
End If
Next
2 取得本机计算机名
str计算机=“。”
Set objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root\cimv2")
Set colComputers = objWMIService.ExecQuery("从 Win32_ComputerSystem 选择 *" )
对于 colComputers 中的每个 objComputer
Wscript.Echo objComputer.Name
下一步
--------- -------------------------------------------------- ---------------------------------
4检查升级包
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery("从 Win32_OperatingSystem 选择 *" )
对于 colOperatingSystems 中的每个 objOperatingSystem
Wscript.Echo objOperatingSystem.ServicePackMajorVersion amp; "." amp; objOperatingSystem.ServicePackMinorVersion
下一步
---------------------------- --------------------------------------------------
5 检查热修复 <
/p>
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root\cimv2")
Set colQuickFixes = objWMIService.ExecQuery("从 Win32_QuickFixEngineering 选择 *" )
对于 colQuickFixes 中的每个 objQuickFix
Wscript.Echo "描述: " amp; objQuickFix.Description
Wscript.Echo "热修复 ID: " amp; objQuickFix.HotFixID
下一步
-------------------------------- ------------------------------------------------ p>
6 检查本地管理员数量
Set objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
设置 objGroup = GetObject("WinNT://" amp; strComputer amp; "/Administrators,group")
对于 objGroup.Members 中的每个 objUser
Wscript.Echo objUser.Name p>
下一页
------------------------------------ -------------------------------------------------------
7 磁盘系统
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("从 Win32_LogicalDisk 其中选择 * DriveType = 3")
对于 colDisks 中的每个 objDisk
Wscript.Echo "磁盘驱动器: "amp; objDisk.DeviceID amp; " -- " amp; objDisk.FileSystem p>
下一页
------------------------------------ -------------------------------------------------------
8 检测自动登录是否开启
Const HKEY_LOCAL_MACHINE = amp;H800
00002
strComputer =“。”
Set objReg=GetObject("winmgmts:\\" amp; strComputer amp; "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion \WinLogon"
strValueName = "AutoAdminLogon"
objReg.GetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName,dwValue
如果 dwValue = 1 则
Wscript.Echo“自动登录已启用。”
Else
Wscript.Echo“自动登录已禁用。”
如果结束
------------------------------------------------ ----------------------------------------------------------------------------------
9 关闭自动登录
Const HKEY_LOCAL_MACHINE = amp;H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:\\" amp; strComputer amp; "\root\default:StdRegProv")
strKeyPath = "Software\Microsoft\Windows NT\CurrentVersion \WinLogon"
strValueName = "AutoAdminLogon"
dwValue = 0
oReg.SetDWORDValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, dwValue
- -------------------------------------------------- -----------------------------------------
10检查Guest是否禁用
设置objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
Set objUser = GetObject("WinNT://" amp; strComputer amp; "/Guest")
如果 objUser.AccountDisabled 则
Wscript.Echo "来宾帐户已禁用。"
Else
Wscript.Echo "来宾帐户是 e
启用。”
结束如果
-------------------------------------------- ------------------------------------------------
11 关闭访客
设置 objNetwork = CreateObject("Wscript.Network")
strComputer = objNetwork.ComputerName
设置 objUser = GetObject ("WinNT://" amp; strComputer amp; "/Guest")
如果 objUser.AccountDisabled 则
Wscript.Echo "Guest 帐户已被禁用。" p>
Else
objUser.AccountDisabled = True
objUser.SetInfo
Wscript.Echo“来宾帐户已被禁用。” >
如果结束
------------------------------------ -------------------------------------------------------
12 搜索本地***象
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" amp; strComputer amp; "\root\cimv2")
Set colShares = objWMIService.ExecQuery("Select * from Win32_Share")
对于 colShares 中的每个 objShare
Wscript.Echo "Name: " amp; objShare.名称
Wscript.Echo "路径: " amp; objShare.Path
Wscript.Echo "类型: " amp; objShare.Type
下一步
-------------------------------------------------------- ----------------------------------
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 "找到的 .txt 文件数量: " amp; colFiles.Count
对于 colFiles 中的每个 aa
NL=NL amp; vbcrlf amp; aa.name
next
Wscript.Echo NL
------------- -------------------------------------------------- -----------------
14 我如何向用户显示一个用于选择文件的对话框?
问: p>
嗨,脚本专家!有什么方法可以让我使用脚本向用户显示一个对话框,供选择用户文件使用吗?
-- BF
答:
您好,BF。如果您使用的是Windows 2000,我们不知道实现这个操作的方法,至少网络中没有内置这样的方法。
但是如果您使用的是Windows 2000,我们不知道实现这个操作的方法,至少网络中没有内置这样的方法。使用Windows的XP,情况就不同了。在Windows XP上,
您可以使用“UserAccounts.CommonDialog”对象向用户显示一个标准的“文件打开”对话框。可以使用类似以下代码脚本:
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "所有文件|*.*" 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"
您也许能够看出它是如何运行的:我们为文件类型提供说明(文本文件),然后插入一个垂直线路分隔符(|),
最后使用标准的通配符来指示所有.txt文件(*.txt)。不是想默认显示。
那么可以使用以下代码:
objDialog.Filter = "Text Files|*.txt|All Files|*.txt 文件,然后为用户提供查看所有文件的选项? *"
试一试,你就明白我们的意思了。
然后,我们指定默认文件夹。
默认情况下,我们希望对话框显示位于驱动器 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:\\" amp; strComputer amp; "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _("Select * from Win32_ProcessWhere Name = 'Winword.exe '")
对于 colProcessList 中的每个 objProcess objProcess.GetOwner strUserName, strUserDomain Wscript.Echo "Process " amp; objProcess.Name amp; " isowned by " _ amp; strUserDomain amp; "\" amp; strUserName amp; "."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:\\" amp; strComputer amp; "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process")
对于中的每个 objProcess colProcessList objProcess.GetOwner strUserName, strUserDomain Wscript.Echo "Process " amp; objProcess.Name amp; " 属于 " _ amp; strUserDomain amp; "\" amp; strUserName amp; "."Next
可能有点奇怪,2005 年 1 月 3 日正好是微软员工的正式休息日。
那么今天为什么会有“嗨,脚本专家!”专栏?这只能归功于微软某些脚本专家的表现对工作的高度奉献和投入的精神。
或者,也可能是由于某个脚本专家 – 还说不出他或她的名字 – 没有意识到今天是节日,所以照常来了(而且是早上七点啊!)。
-------------------------------------------- --------------------------------------------------
16 可以将脚本的输出复制到截板吗?
问:
嗨,Scripting Guy!有办法将脚本的输出复制到截板吗? ?
-- ZW,马赛,法国
回答:
您好,ZW。如果您不介意用一些疯狂的解决方法,那么实际上将脚本输出复制到剪贴板相当容易。
首先,您需要构造一个字符串,其中包含所需的输出。然后,创建 Internet Explorer 的一个实例,
然后在其中打开一个空白页。接着,利用Internet Explorer对象模型的内置功能,将字符串复制到剪贴板;
特别的是,可以使用clipboardData.SetData方法来实现这个技巧。
将某些数据复制到剪贴板的示例脚本如下:
strCopy = "此文本已复制到剪贴板。"
设置 objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate("about:blank")
objIE.document.parentwindow.clipboardData. SetData "text",strCopy
objIE.Quit
运行脚本,然后打开记事本,然后单击“粘贴”;应该可以看到所复制的字符串。
顺便说一下,所有这些都是在“幕后”发生的,Internet Explorer 并不会真的出现在屏幕上。
因为这是,在默认情况下,通过脚本创建的任何 IE 实例在运行时都是隐藏的,除非您使用如下语句将其显示出来:
objIE.Visible = True