使用VBS运行PowerShell

时间:2015-10-08 09:25:10

标签: vbscript powershell-v2.0

所以我有一个创建表单的.ps1文件。 该表格需要10-20秒,具体取决于PC性能和首次加载时的连接。

现在我正在使用VBS加载一个简单的.gif文件作为加载屏幕,同时运行.ps1文件。 我现在的问题是,我希望在表单弹出时关闭加载屏幕。我试图确定通过进程,但由于它加载powershell.exe失败,但表单需要10秒... 这有可能吗? 你们有更好的想法吗?

Dim i
Dim strComputer
Dim FindProc
Dim counter 
counter = 0
strComputer = "."
FindProc = "powershell.exe"
'Load the gif file
Set objExplorer = CreateObject("InternetExplorer.Application")
With objExplorer
    .Navigate "about:blank"
    .Visible = 1
    .Document.Title = "Show Image"
    .Toolbar=False
    .Statusbar=False
    .Top=400
    .Left=400
    .Height=355
    .Width=435
    .Document.Body.InnerHTML = "<img src='\\10.10.67.173\Templates$\Scripts\Resources\loadingtest.gif'>"
End With

'Run the PS script
Set objShell = CreateObject("Wscript.shell")
objShell.Run "CMD /C START /B " & objShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\WindowsPowerShell\v1.0\powershell.exe -executionpolicy bypass -file \\10.10.67.173\Templates$\Scripts\FormSignature-V0.9.5.ps1", 0, False



'Determine when to close Loading screen
Do While counter < 3
	wscript.Sleep 2000
	
	Set objWMIService = GetObject("winmgmts:" _
		& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
	Set colProcessList = objWMIService.ExecQuery _
		("Select Name from Win32_Process WHERE Name LIKE '" & FindProc & "%'")
	If colProcessList.count>0 then
		'Quit the process if it finds its running
		WScript.Echo("found")
		'objExplorer.quit 
	else
		'Do nothing
		WScript.Echo("not found")
	End if 
	Set objWMIService = Nothing
	Set colProcessList = Nothing
	counter = counter + 1
Loop
Set objShell = Nothing

1 个答案:

答案 0 :(得分:0)

在你的VB脚本中:

  1. 在PS脚本可以访问的文件夹中创建文件。
  2. 启动加载图片。
  3. 启动PS脚本。
  4. 在等待循环中,每隔一秒左右,检查文件是否仍然存在 如果是,请关闭IE的实例并退出脚本。
  5. 在PS脚本中:

    1. 表单初始化代码完成后或表单加载后的第一个操作后,找到并删除文件。