【问题标题】:Need help in this visual basic script: launching a program in silent mode在这个 Visual Basic 脚本中需要帮助:以静默模式启动程序
【发布时间】:2014-11-06 05:06:35
【问题描述】:

我正在尝试以静默模式启动程序,以安装某个应用程序。 以静默模式启动安装的命令行如下:

setup.exe /s /v" /q"

我尝试使用以下内容: strCmd="C:\setup.exe"" /s /v"""" /q"""

但这显然行不通。任何人都可以帮助我编写正确的语法。 我知道引号作为转义字符有问题。 我浪费了很多时间试图弄清楚这一点。 非常感谢任何帮助。

【问题讨论】:

  • 你确定这个 setup.exe 可以接受这样的参数吗?应该是setup.exe /s /v /q
  • 是的,这就是在静默模式下启动程序的确切语法(取自程序文档)。还使用命令提示符进行了尝试。
  • 试过strCmd="C:\setup.exe /s /v"" /q"""?
  • 刚刚尝试了您的建议。不走运:-(。谢谢。
  • 我要启动的程序是这样的:www-10.lotus.com/ldd/lcwiki.nsf/dx/… 在“静默安装 IBM Connections Plug-ins (Windows)”部分下,您可以看到正确的静默安装命令它

标签: vbscript silent


【解决方案1】:

从 cmets 确定正确的安装字符串。对于 VBS,您可以(在机器上)运行它:

Dim oShell
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd /C C:\setup.exe /s /v""/qn"""
Set oShell = Nothing

如果不想使用GPO部署,也可以使用PSEXEC.EXE手动推送安装任务到电脑上,不需要setup.exe在电脑上,有网络共享文件夹就好为此。

【讨论】:

  • 完美!!那个脚本就像一个魅力!太感谢了。你说得对,我打算通过 GPO 使用登录脚本来安装软件。我唯一担心的是用户没有管理员权限,所以安装会失败。因此我以前有这个: Set WshShell=WScript.CreateObject("WScript.Shell") strCmd="C:\setup.exe"" /s /v""/qn""" strUser="domain\admin" strPass= "密码" 设置 WshShell=CreateObject("WScript.Shell") WshShell.Run "runas.exe" & " /u:" & strUser & " " & strCmd WScript.Sleep 100 WshShell.Sendkeys strPass & "~"
  • 但这没有用。是否可以使用域管理员帐户运行您的脚本并传递我上面的密码。 WScript.Sleep 100 只是为了让用户在安装软件时不会在登录时出现黑屏。所以我尽量减少那个时间。剩下的就是密码不可见。非常感谢您的帮助。为此苦苦挣扎了 3 天。
【解决方案2】:

如果您想使用不同的凭据运行命令,可以使用RunAs 命令。但是,将您的命令嵌入到 RunAs 命令中时,事情会变得很棘手。这些步骤可能会有所帮助:

  1. 确定正确的命令行语法。直接在命令提示符下测试它以确保它是正确的。

    c:\setup.exe /s /v"/qn"
    
  2. RunAs 命令中嵌入您的命令。您的整个命令需要用引号括起来。此外,命令中的任何引号都需要使用\ 进行转义。同样,直接在命令提示符下测试它以确保它是正确的。

    runas.exe /user:DOMAIN\USER "c:\setup.exe /s /v\"/qn\""
    
  3. 将整个命令字符串转换为 VBScript。无论您在哪里看到引用,将其翻倍,或将其替换为 Chr(34)。以下是双引号时的样子:

    runas.exe /user:DOMAIN\USER ""c:\setup.exe /s /v\""/qn\""""
    
  4. 将其分配给 VBScript 变量。我们只需要在整个命令周围加上额外的引号:

    strCommand = "runas.exe /user:DOMAIN\USER ""c:\setup.exe /s /v\""/qn\"""""
    
  5. 现在你准备好了。您可以直接使用Shell.Run 运行它:

    With CreateObject("WScript.Shell")
        .Run strCommand
    End With
    

请注意,当RunAs 提示您输入密码时,您仍然需要使用SendKeys,因为它无法在命令行上传递密码。

另一种方法是使用SCHTASKS 安排一次性任务立即运行。使用SCHTASKS,您可以在命令行上传递完整的凭据。

【讨论】:

  • 绝对精彩!!那是完美的!邦德,感谢一百万的解决方案。你是救世主!我还要感谢 Patrick 抽出宝贵的时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-20
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 1970-01-01
相关资源
最近更新 更多