无论您是IT分析师还是普通计算机用户,您都可能需要在PC上经常执行许多任务。 VB脚本按比例缩小,作为Windows脚本的Visual Basic程序可以执行任何操作,从提取有关计算机硬件的重要信息,到停止和启动服务或重置网卡。
可以了解如何以正常方式完成所有这些单独的操作,或使用批处理文件来完成这些操作。但是VB脚本比批处理脚本更好,因为它们更灵活。如果您将以下脚本存储在需要时可以快速到达的公共位置,则可以在很短的时间内完成这些任务。您只需双击脚本,回答提示,任务就完成了。
看看下面的VB Windows脚本,如果看到您想使用的任何脚本,只需复制并粘贴即可。将该脚本放到记事本或其他编码注释工具中,然后将其保存为WSF文件。
准备Windows脚本
下面详述的每个脚本只要双击就可以运行因为您已经使用.WSF扩展名命名了文件,并且还用以下代码括起了代码:
<job><script language="VBScript">
并用以下代码结束了代码:
WScript.Quit</script></job>
确保Windows能够识别脚本的编写语言,并对其进行正确处理。
1。使用Windows脚本获取计算机信息
Windows提供了称为WMI或Windows Management Instrumentation的工具,它为脚本提供了访问操作系统组件的界面。实际上,您可以对WMI运行查询以获取有关系统的当前实时信息。 Microsoft提供了您可以针对系统进行的所有查询类别的完整列表。
我们介绍了如何使用VBA将计算机信息提取到Excel中,但是您可以使用在Excel之外的简单VB脚本。
在此示例中,我们将在系统中查询处理器信息(系列,制造商和内核数),电池信息(名称,剩余可用空间和总体信息)尺寸)。然后,我们将所有这些信息输出到CSV文件中以便于查看。
第一步是设置要用于输出到CSV文件的FileSystemObject并创建文件:<
Set oFSO = CreateObject("Scripting.FileSystemObject")sFile1 = "MyComputerInfo.csv"Set oFile1 = oFSO.CreateTextFile(sFile1, 1)
下一步是设置并执行WMI查询:
strQuery = "SELECT Family,Manufacturer,NumberOfCores FROM Win32_Processor"Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )
最后,对结果进行排序并将信息输出到CSV文件。如果您想花哨的话,可以在前面加上几行代码,以使输出文件看起来更好:
oFile1.WriteLine "Processor Information"oFile1.WriteLine "------"For Each objResult In colResults strResults = "Family:,"+CStr(objResult.Family) oFile1.WriteLine strResults strResults = "Manufacturer:,"+CStr(objResult.Manufacturer) oFile1.WriteLine strResults strResults = "Number of Cores:,"+CStr(objResult.NumberOfCores) oFile1.WriteLine strResultsNext
如果您现在运行代码,则输出将如下所示:
对于代码的后两部分,您将重复并更改查询以查找其他信息。这是电池信息查询:
oFile1.WriteLine ""strQuery = "SELECT Description,Status FROM Win32_Battery"Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )oFile1.WriteLine "Battery Information"oFile1.WriteLine "------"For Each objResult In colResults strResults = "Status:,"+CStr(objResult.Description) oFile1.WriteLine strResults strResults = "Description:,"+CStr(objResult.Status) oFile1.WriteLine strResultsNext
,这是逻辑磁盘查询的下一部分:
oFile1.WriteLine ""strQuery = "Select Name, FreeSpace, Size from Win32_LogicalDisk"Set colResults = GetObject("winmgmts://./root/cimv2").ExecQuery( strQuery )oFile1.WriteLine "Disk Information"oFile1.WriteLine "------"'Identify the Logical Disk SpaceFor Each objResult In colResults strResults = "Name:,"+CStr(objResult.Name) oFile1.WriteLine strResults strResults = "Free Space:,"+CStr(objResult.FreeSpace) oFile1.WriteLine strResults strResults = "Disk Size:,"+CStr(objResult.Size) oFile1.WriteLine strResultsNext
最后,请记住关闭文件并将对象设置为“ Nothing":
oFile1.CloseSet oFile1 = Nothingset colResults = NothingstrResults = ""
将所有代码放入新的.WSF文件中,运行它,结果如下所示:
只需将上面的查询换成任何其他您想获取有关信息的计算机设备或软件,只需单击一下鼠标,即可随时获取完整的系统报告。
2。停止并启动服务
有时某些服务会出现问题,只需快速重启即可重新正常运行。在IT中,当您被迫运行有时会出现一些问题的服务器软件时,尤其如此。
如果您想在服务重启过程中节省一分钟左右,只需存储以下内容:脚本一些方便的地方。它会提示您输入要重新启动的服务的名称,然后它将完全一样。
由于停止和启动服务需要管理特权,因此需要放置以下代码在脚本开始时,为您的脚本授予更高的特权:
If Not WScript.Arguments.Named.Exists("elevate") Then CreateObject("Shell.Application").ShellExecute WScript.FullName _ , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1 WScript.QuitEnd If
完成此操作后,添加其余代码以运行输入框供用户输入,启动命令窗口,然后将其发送给“ net stop"和“ net start命令":
Set cmdShell = CreateObject("WScript.Shell")strServiceName=Inputbox("Inter Service to Stop","Input Required")cmdShell.Run "cmd.exe"WScript.Sleep 1000cmdShell.SendKeys "net stop "+strServiceNamecmdShell.SendKeys "{Enter}"WScript.Sleep 1000cmdShell.SendKeys "net start "+strServiceNamecmdShell.SendKeys "{Enter}"WScript.Sleep 1000cmdShell.SendKeys "Exit"cmdShell.SendKeys "{Enter}"
仅此而已。无需四处寻找服务工具。只需运行此脚本,然后在几秒钟内停止并启动任何服务。
3。更改注册表设置,默认管理员密码
使用以下脚本,我们将用一只石头杀死两只鸟。该脚本将向您展示如何使用VB脚本编辑注册表。它还将为您提供一个脚本,该脚本可让您通过编辑这些注册表设置来设置默认的Windows用户名和密码。
操作原理如下。首先,由于编辑注册表需要管理员权限,因此您需要为脚本设置提升的特权:
If Not WScript.Arguments.Named.Exists("elevate") Then CreateObject("Shell.Application").ShellExecute WScript.FullName _ , """" & WScript.ScriptFullName & """ /elevate", "", "runas", 1 WScript.QuitEnd If
首先运行两个输入框,询问用户要使用的用户名和密码:
strUserName=Inputbox("Enter the default User Name","Input Required")strPassword=Inputbox("Enter the default Password","Input Required")
下一步,设置外壳程序对象,并将这些值写入相应的注册表项:
Set wshShell = CreateObject( "WScript.Shell" )wshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName", strUserName, "REG_SZ"wshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword", strPassword, "REG_SZ"Set wshShell = Nothing
就够了。 “ RegWrite"方法使您可以使用VB Windows脚本将任何值写入任何注册表项。您只需要知道适当的路径即可。
运行脚本并回答提示。
您输入的值将直接插入您已设置的注册表设置中
使用该脚本并根据自己的喜好对其进行调整。您可以编辑自己喜欢的任何注册表项,因此要有创意!
4。重置网络连接
使用VB脚本重置网络连接是我们在PCPC.me之前介绍的内容。实际上,此版本的以下版本已按比例缩小并且更易于实现。无需提示输入单个网卡,它会重置所有活动连接,从而有望解决您可能遇到的任何网络问题。
与其他需要管理员权限的脚本一样,您需要添加开头部分中的特权提升。从上面的脚本中复制该代码。
下一步,创建WMI对象并查询它以获取系统上已启用的网络适配器的列表:
strComputer = "."Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")Set colItems = objWMIService.ExecQuery( _ "SELECT * FROM Win32_NetworkAdapter Where NetEnabled = 'True'")
最后,遍历所有启用的适配器并将其重置:
For Each objItem in colItems objItem.Disable WScript.Sleep 1000 objItem.EnableNext
这将重置所有活动的网络适配器,这通常是解决烦人的网络问题的最快方法。请将此脚本放在手边,并在网络速度较慢或出现其他奇怪的网络问题时立即尝试。
5。 Ping设备或网站
我最后保存了我最喜欢的VB Windows脚本。实际上,这是我在家用计算机上设置的一项计划任务,每天要运行几次,以检查我的网站是否处于活动状态。如果站点关闭,我有脚本向我发送电子邮件。您可以使用同一脚本来监视网络上的重要服务器或计算机,并在脚本无法ping设备时向自己发送电子邮件。
首先,为要ping的目标设置脚本,创建shell对象,然后运行ping命令。
strTarget = "topsecretwriters.com"Set WshShell = WScript.CreateObject("WScript.Shell")Ping = WshShell.Run("ping -n 1 " & strTarget, 0, True)
使用Select Case语句遍历Ping结果并做出相应的响应。如果结果返回为零,则表明站点(或服务器)处于在线状态,而您无需执行任何操作。如果返回“ 1",则ping操作失败,您需要执行某些操作。就我而言,我使用Windows CDO对象发送电子邮件:
Select Case Ping Case 0 Case 1 Set objMessage = CreateObject("CDO.Message") Set objConfig = CreateObject("CDO.Configuration") objConfig.Load -1 Set Flds = objConfig.Fields With Flds .Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True .Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1 .Item ("http://schemas.microsoft.com/cdo/configuration/sendusername")="[email protected]" .Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword")="xxxxxxxxxxxxxxxxx" .Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtp.gmail.com" .Item ("http://schemas.microsoft.com/cdo/configuration/sendusing")=2 .Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=465 .Update End With With objMessage Set .Configuration = objConfig .Subject = "Your site is offline" .From = "[email protected]" .To = "[email protected]" .TextBody = "Hey, your website is offline." .Send End WithEnd Select
一旦脚本运行并且无法ping设备或网站,您会收到一条即时消息。
快速,简便,高效!
使用VB Windows脚本控制您的计算机
这些只是您可以使用VB脚本执行的一些很酷的操作的一些示例简化您的计算机使用。您还可以执行其他许多操作,例如使用VB和Synctoy进行自动备份。
您使用Windows脚本在计算机上自动执行了哪些操作?您是使用VB编写代码还是使用PowerShell等其他工具编写代码?