2

当用户单击特定排列的单选按钮以运行一系列 vbscript(以及很快的 Perl 脚本)时,我有一个要求。

我将所有的 vbscripts 存储在服务器端,它们不需要在远程系统上运行。哦,是的,这些脚本正在我们的 Intranet 中收集有关远程系统的信息。

最好的方法是什么。目前我有这个只运行一个脚本,而不是多个......我应该保留这个还是放弃这个想法。

Protected Sub windowsScript(ByVal COMPUTERNAME As String)
    ' Create an array to store VBScript results
    Dim winVariables(1) As String
    Dim filePath As String = COMPUTERNAME & "\C$\Windows\somefile.txt"
    'Execute PsExec on script
    runPsExec(COMPUTERNAME, "systemInfo.vbs", 1)
    'Import data from text file into variables
    textRead(filePath, winVariables)
    System.Threading.Thread.Sleep(1000)
    'Delete the file on server - we don't need it anymore
    runPsExec(COMPUTERNAME, "systemInfo.vbs", 2)
    MsgBox("Windows OS: " & winVariables(0).ToString())
    MsgBox("Service Pack: " & winVariables(1).ToString())

End Sub

此外,在这里很难看到,因为我确实有另一个函数“textRead”,但正在发生的事情是这个特定的脚本存储在客户端,它输出到文本文件的 vbscript。textRead 将读取变量并将文本文件发送回服务器以读取它。

这绝对不是我想做的。我想变得更有活力,再加上我的新脚本……它们根本不需要在客户端上。

任何帮助,将不胜感激 :)

我正在考虑制作某种类型的 While 循环,不确定这是否可行。

4

1 回答 1

1

通过浏览器执行此操作有点奇怪。在我的公司,我们在登录时使用 vbscript logonscript 收集系统信息,并将结果添加到日志文件中,我们可以通过 webapp 访问该文件以进行研究。有时,当需要时,我们会运行特定的脚本来收集更多数据或通过 windows SCCM 更改某些系统设置。

如果目标是为用户提供有关他的系统的信息,那么有一些很好的实用程序可以在本地运行(但从服务器共享的某个位置)。

编辑

启动多个进程的简单方法

dim scripts_to_run, script
const COMPUTERNAME = 0, SCRIPTNAME = 1, EXTRA_PARAMS = 2
scripts_to_run = Array(_
  Array("computer1","script1.vbs",1),_
  Array("computer2","script1.vbs",0),_
  Array("computer3","script3.vbs",3)_
)
for each script in scripts_to_run
  runPsExec script(COMPUTERNAME), script(SCRIPTNAME), script(EXTRA_PARAMS)
  runPsExec join(script,",")
next

sub runPsExec(p1, p2, p3)
  'here coms your code shat runs the script
  wscript.echo p1 & p2 & p3
end sub

或更短的版本

dim scripts_to_run, aArgs
scripts_to_run = Array(_
  Array("computer1","script1.vbs",1),_
  Array("computer2","script1.vbs",0),_
  Array("computer3","script3.vbs",3)_
)
for each aArgs in scripts_to_run
  runPsExec aArgs
next

sub runPsExec(aArgs)
  'here coms your code shat runs the script
  wscript.echo aArgs(0) & aArgs(1) & aArgs(2)
end sub
于 2012-08-03T19:49:43.320 回答