Questions tagged «vbscript»

由Microsoft开发的一种解释为脚本语言,该语言以Visual Basic为模型

0
带有SendKeys的VBScript中出现意外行为
我正在尝试创建一个VBScript,我可以从计划任务运行以重新启动我们的SonicWall防火墙。防火墙是一种“低端”商业模式(TZ400),我经常不得不重新启动它,因为我们的互联网连接似乎陷入困境(这是我以后需要研究的另一个问题)。 我在另一个站点上找到以下代码,plink.exe用于我的环境并对其进行修改: Set sw= CreateObject("WScript.Shell") sw.run"C:\plink\path\Plink.exe -ssh adminuser@X.X.X.X -pw adminpassword" WScript.Sleep 500 sw.SendKeys "restart" sw.SendKeys "{Enter}" WScript.Sleep 800 sw.SendKeys "yes" sw.SendKeys "{Enter}" WScript.Sleep 10000 sw.SendKeys "exit" sw.SendKeys "{Enter}" 不幸的是,当我运行这个脚本时,它似乎跳过了SendKeys方法调用中的一些字符。如果我从我的机器(Windows 7)运行它,我通常可以让它传递“足够”的字符以完成操作,但是当我尝试在服务器上运行相同的脚本时(Windows Server 2008 R2 - 我已经通过RDP连接,它完全变得混乱。在一次特别“错误”尝试之后,请参阅下面的屏幕截图。 我已经尝试在每个命令之间加一个延迟并且它是相应的{ENTER},但这似乎使它变得更糟。我已经尝试将文本括在括号中,以防万一它与方法调用的语法有关,但这也无济于事。 据我所知,似乎命令提示符SendKeys由于某种原因根本无法“跟上”该方法。有没有其他人经历过这个问题,有没有人建议避免或绕过它的最佳方法?例如,有没有办法以某种方式“减慢”脚本的执行速度?在此先感谢您的任何建议。 编辑:我已经能够通过改变脚本来在服务器上成功执行脚本,以便在每个字符之间分别发送100毫秒的睡眠时间: Set sw= CreateObject("WScript.Shell") sw.run"C:\plink\path\Plink.exe -ssh adminuser@X.X.X.X -pw adminpassword" WScript.Sleep 500 sw.SendKeys "r" …

3
如何检测Microsoft Office版本名称
以编程方式,什么是可以获取已安装的Microsoft Office版本名称的方法?我已经尝试了我能找到的每个Powershell命令,VBScript和WMI查询。我已经仔细研究了注册表和文件系统,我找不到收集已安装的Office版本的完美方法。 我能够提出的最接近的方法是使用WMIC查询: wmic product where "Name like '%Office%'" get name,version 不幸的是,这会返回各种各样的应用程序,即使更精细地过滤它也不会告诉我“Office 16”是“Pro”,“Professional Plus”还是“Office365”。 否则,注册表值为 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\Scenario\INSTALL\ProductstoAdd 至少在2016版本上存在,但在旧版本中不存在。它本身不包含友好名称,因此需要进一步编写脚本以将数据转换ProPlusRetail.16_en-us_x-none为“Office 2016 Professional Plus”或O365BusinessRetail.16_en-us_x-none“Office 365 Business(2016)” 我希望有人比巨大的脚本中的一堆if / elseif / elseif语句更简单。


0
部署窗口“发送到”扩展
我开发了一个小的VB脚本,包含在上下文菜单中的windows“发送到”部分。 我知道如何通过链接或复制文件来实现以这种方式使用的脚本: %UserProfile%\AppData\Roaming\Microsoft\Windows\SendTo 现在我必须将脚本部署到大约1200个客户端,其中一些客户端使用了一些脚本。 如果这很重要,则由ivanti / landesk管理控制台完成部署。 目前我只想到一种方法来保证每个用户都可以通过将批处理脚本部署到位于以下位置的公共启动文件夹来使用它: \Microsoft\Windows\Start Menu\Programs\StartUp 批处理文件然后在每个用户的登录时运行,并将实际脚本复制到users \SendTo文件夹。 我知道我可以将脚本复制到SendTo默认用户配置文件的文件夹中。但这意味着只有新用户才会收到它。 这是做这项工作的预定方式还是有更方便的做法? 我能想到的另一种方法是遍历注册表中的所有可用用户配置文件并链接文件或用户目录,并将文件复制到相应的%APPDATA%。对于这样的任务来说,这看起来比我应该付出的努力更多。

1
添加环境,启动和应用程序的路径
我想添加一些Shell操作来执行一些应用程序。这些应用需要复杂批处理文件中的某些环境设置。 也就是说,我的动作应为: c:\xxx\SetPath.bat c:\yyy\startApp.exe 问题是SetPath.bat打开cmd.exe并设置环境并留在cmd.exe中,但是我需要设置该环境然后执行一个应用程序。最重要的是,该应用程序是一个gui应用程序,因此最好避免在运行环境批处理文件时显示控制台(我可以使用hidcon)。 gui应用程序是cygwin shell(mintty),在登录时我还需要添加一些操作:),但这没什么大不了的。 我已经看到过用vbs做过类似的事情,但是我不记得在哪里。


1
运行具有计算机启动/登录权限的VBS脚本
我有 script.vbs 我想在登录Windows后在计算机启动时运行。 试图将它放在启动目录中 - >不起作用。 试图在Windows的任务调度程序中选择它 - >不起作用。 是什么 doesn't work 意思?我的意思是它不是运行它,而是在文本编辑器中打开。 我已经读过Windows 10不允许运行这样的脚本( vbs, ps1 )直接,特别是在启动时 我通过启动来制定解决方法 cmd 开始了 vbs 要么 ps1。但我不喜欢那样。因为它总是打开一秒窗口...... 所以 如何直接运行 vbs 在Windows启动? 有 Windows 10专业版

1
使用VBScript检测触摸硬件
我正在寻找一种方法来使用VBScript检测已安装的触摸硬件。我的脚本不起作用。 此脚本旨在查找指针设备并相应地进行回显。 On Error Resume Next strComputer = "." WScript.Echo "==========================================" Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PointingDevice") For Each objItem In colItems TouchDevice = objItem.PointingType if TouchDevice = 8 then Wscript.Echo "Found touch based hardware" WScript.Echo "==========================================" Else Wscript.Echo "No Touch …

1
获取Vbscript以在任务计划程序中运行
我有一个VBSCRIPT文件,用于在特定时间每天备份一次数据库,这是使用任务调度程序完成的,但我现在的问题是此脚本要求您按ok或取消以完成操作。 在调度程序的运行命令行中是否有任何我可以使用的开关,以便它不会等待我单击确定以完成任务?

1
如何解决类型不匹配的VBScript运行时错误;代码:800a000D
我可能没有这样做,但我正在尝试修改VBScript以查找Windows产品密钥以支持查找Microsoft Office Pro的产品密钥。这是代码,但我希望“unknown”文件夹名称与通配符具有相同的效果。我知道在VBScript中无法使用实际的通配符,但是如何在脚本中返回“DigitalProductID”的注册表值而不指定“unknown”文件夹?或者我在其他地方更改代码? Set WshShell = CreateObject("WScript.Shell") MsgBox ConvertToKey(WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Registration\unknown\DigitalProductId")) Function ConvertToKey(Key) Const KeyOffset = 52 i = 28 Chars = "BCDFGHJKMPQRTVWXY2346789" Do Cur = 0 x = 14 Do Cur = Cur * 256 Cur = Key(x + KeyOffset) + Cur Key(x + KeyOffset) = (Cur \ 24) And 255 …


1
VBScript回车
我编写以下VB脚本,以便从Linux机器上的WIN XP运行命令,并将输出命令重定向到out.txt文件(在C:\下) 我的VB脚本我将/ etc / hosts文件从Linux机器打印到out.txt文件 脚本工作正常,但我有一个问题: / etc / hosts文件打印在带有一个长行的out.txt文件中,代替三行 示例:(out.txt) 127.0.0.1 localhost 19.20.183.99 MY_IP 10.10.10.10 LOOP 就地在out.txt中打印以下主机文件 127.0.0.1 localhost 19.20.183.99 MY_IP 10.10.10.10 LOOP 我的VB脚本 Const TARGET_HOST = "19.20.183.99" const PATH = "cat /etc/hosts" const LOGIN = "root" const PASS = " dgdgd " Const PLINKPATH="""C:\dir1\plink.exe""" Set Sh = …

1
VBS - 使用带有超时的wScript .run时获取cmd无效语法错误
CreateObject(“Wscript.Shell”)。运行“timeout / t 10 / nobreak && cd C:/ Files / MyApp / && start app.exe”,1,False 这是我非常简单的脚本:尝试使用超时启动程序。 但我似乎得到一个语法错误(cmd屏幕闪烁非常快说我只能使用超时一次 - 我已经只使用过一次......) PS:当我将命令直接粘贴到cmd时,它可以正常工作。

1
强制Windows Update使用过滤器检查更新,以避免某些类型的更新?
我需要创建一个程序来检查并安装重要更新 是否只有更新可用时才创建弹出窗口? 目前,我正在使用以下代码检查更新: ' Written in 2007 by Harry Johnston, University of Waikato, New Zealand. ' This code has been placed in the public domain. It may be freely ' used, modified, and distributed. However it is provided with no ' warranty, either express or implied. ' ' Exit Codes: …

0
工作簿单元格中的当前日期
我有一个工作簿报告,其中有几张纸,每张纸都有一个公共单元,其中有当前日期和时间。 但是,将来打开文件时,它不应更改为将来的日期。它应保持与创建时相同。 8/8/2017 8:52 AM IST 单元格的确切格式。 在上面的单元格中,日期每天都在变化,因为这是一个报表。 当我打开用于生成报告日期的文件时,有什么方法可以更改为当前日期。 文件名也有提到的日期。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.