【发布时间】:2015-01-03 07:30:55
【问题描述】:
一位同事编写了一个 PowerShell 脚本,使重复性广告任务更加变得更加容易。但是(我不知道细节),他写它的方式是你必须打开powershell.exe并点击“运行”来执行脚本。我们的机器上已经打开了一百万个窗口,再多一个窗口实在是太多了。
所以,我正在尝试编写一个运行隐藏控制台的 .vbs,但允许 .ps1 文件打开一个窗口。目前,它只是闪烁一瞬间然后消失。
代码:
Const HIDDEN_WINDOW = 0
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
objProcess.Create "powershell.exe -command myscript.ps1", null, objConfig, intProcessID
如果我将 HIDDEN_WINDOW 设置为 0,它会隐藏所有内容。有没有办法隐藏初始控制台,但显示 .ps1 创建的窗口?
【问题讨论】:
-
我认为您需要重新启动。
-
我认为这是不可能的。该过程要么隐藏要么不隐藏。不能部分隐藏。
-
我最终想通了。基本上,我可以使用 powershell 以我想要的方式启动自己。我又走了一步,使用脚本提取用户名并将其插入到路径中。
Dim strUser Dim usrPath strUser = CreateObject("WScript.Network").UserName usrPath = """\\somePath\" & strUser & "\myscript.ps1"""这是启动 PS hidden 的部分,但允许看到它的脚本:strCommand = "powershell -WindowStyle hidden -command " & usrPath& usrPath 连接路径。您可以只输入路径并跳过所有变量垃圾。
标签: powershell vbscript