如何用单个VBS文件执行PowerShell编码命令并隐藏控制台?
单个VBS文件无控制台运行PowerShell窗体的问题及解决
问题描述
已知多文件组合(vbs + bat + ps1 或 vbs + ps1)可实现需求,但需用单个VBS文件达成相同效果。
编写的代码可正常运行,但会在后台显示PowerShell控制台。通过VBS启动ps1文件时不会显示控制台,想知道如何在单个VBS文件中实现无控制台运行?尝试添加参数,0, True后,窗体完全无法显示,求解决建议。
原代码
dim EncodedCommand EncodedCommand = "YQBkAGQALQB0AHkAcABlACAALQBBAHMAcwBlAG0AYgBsAHkATgBhAG0AZQAgACcAUwB5AHMAdABlAG0ALgBXAGkAbgBkAG8AdwBzAC4ARgBvAHIAbQBzACcADQAKACQAbQBhAGkAbgAyACAAPQAgAE4" &_ "AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAFcAaQBuAGQAbwB3AHMALgBGAG8AcgBtAHMALgBGAG8AcgBtAA0ACgAkAG0AYQ" &_ "BpAG4AMgAuAEMAbABpAGUAbgB0AFMAaQB6AGUAIAA9ACAAJwA2ADAAMAAsADYAMAAwACcADQAKACQAbQBhAGkAbgAyAC4ATQBpAG4AaQBtA" &_ "GkAegBlAEIAbwB4ACAAPQAgACQAZgBhAGwAcwBlAA0ACgAkAG0AYQBpAG4AMgAuAE0AYQB4AGkAbQBpAHoAZQBCAG8AeAAgAD0AIAAkAGYA" &_ "YQBsAHMAZQANAAoAJABtAGEAaQBuADIALgBUAGUAeAB0" &_ "ACAAPQAgACcARAB6AGkAYQBsAGEAcwB6ACAAawB1AHIA" &_ "dwBvACcADQAKACQAbQBhAGkAbgAyAC4AQQB1AHQAbwBT" &_ "AGkAegBlACAAPQAgACQAdAByAHUAZQAgAA0ACgAkAG0A" &_ "YQBpAG4AMgAuAFMAdABhAHIAdABQAG8AcwBpAHQAaQBv" &_ "AG4AIAA9ACAAWwBTAHkAcwB0AGUAbQAuAFcAaQBuAGQA" &_ "bwB3AHMALgBGAG8AcgBtAHMALgBGAG8AcgBtAF" &_ "MAdABhAHIAdABQAG8AcwBpAHQAaQBvAG4AXQA6" &_ "ADoAQwBlAG4AdABlAHIAUwBjAHIAZQBlAG4AIA" &_ "ANAAoAJABtAGEAaQBuADIALgBTAGgAbwB3AEQA" &_ "aQBhAGwAbwBnACgAKQANAAoA" set shell = WScript.CreateObject("WScript.Shell") shell.Run "powershell.exe -noexit -executionpolicy bypass -encodedcommand " & EncodedCommand
解决方案
已找到解决方法:要让,0, True参数生效,需将完整的PowerShell命令封装到单个变量中,修改后的代码如下:
修改后的代码
dim EncodedCommand EncodedCommand = "YQBkAGQALQB0AHkAcABlACAALQBBAHMAcwBlAG0AYgBsAHkATgBhAG0AZQAgACcAUwB5AHMAdABlAG0ALgBXAGkAbgBkAG8AdwBzAC4ARgBvAHIAbQBzACcADQAKACQAbQBhAGkAbgAyACAAPQAgAE4" &_ "AZQB3AC0ATwBiAGoAZQBjAHQAIABTAHkAcwB0AGUAbQAuAFcAaQBuAGQAbwB3AHMALgBGAG8AcgBtAHMALgBGAG8AcgBtAA0ACgAkAG0AYQ" &_ "BpAG4AMgAuAEMAbABpAGUAbgB0AFMAaQB6AGUAIAA9ACAAJwA2ADAAMAAsADYAMAAwACcADQAKACQAbQBhAGkAbgAyAC4ATQBpAG4AaQBtA" &_ "GkAegBlAEIAbwB4ACAAPQAgACQAZgBhAGwAcwBlAA0ACgAkAG0AYQBpAG4AMgAuAE0AYQB4AGkAbQBpAHoAZQBCAG8AeAAgAD0AIAAkAGYA" &_ "YQBsAHMAZQANAAoAJABtAGEAaQBuADIALgBUAGUAeAB0" &_ "ACAAPQAgACcARAB6AGkAYQBsAGEAcwB6ACAAawB1AHIA" &_ "dwBvACcADQAKACQAbQBhAGkAbgAyAC4AQQB1AHQAbwBT" &_ "AGkAegBlACAAPQAgACQAdAByAHUAZQAgAA0ACgAkAG0A" &_ "YQBpAG4AMgAuAFMAdABhAHIAdABQAG8AcwBpAHQAaQBv" &_ "AG4AIAA9ACAAWwBTAHkAcwB0AGUAbQAuAFcAaQBuAGQA" &_ "bwB3AHMALgBGAG8AcgBtAHMALgBGAG8AcgBtAF" &_ "MAdABhAHIAdABQAG8AcwBpAHQAaQBvAG4AXQA6" &_ "ADoAQwBlAG4AdABlAHIAUwBjAHIAZQBlAG4AIA" &_ "ANAAoAJABtAGEAaQBuADIALgBTAGgAbwB3AEQA" &_ "aQBhAGwAbwBnACgAKQANAAoA" pSCmd = "powershell.exe -noexit -windowstyle Hidden -executionpolicy bypass -encodedcommand " & EncodedCommand CreateObject("WScript.Shell").Run pSCmd, 0, True
内容的提问来源于stack exchange,提问作者Nawad-sama
相关产品推荐
相关产品推荐

