如何在静默/隐藏模式下使用任务调度程序运行powershell脚本?

时间:2017-10-18 10:59:55

标签: windows powershell windows-10 powershell-v5.0

我正在尝试使用任务计划程序运行powershell脚本,它会弹出PowerShell cmd窗口。有没有办法在运行脚本时禁用它?我在powershell v5.0上

我已经尝试过-WindowStyle隐藏但仍会弹出PowerShell cmd窗口。

欢迎任何指导。

谢谢。

1 个答案:

答案 0 :(得分:4)

由于powershell.exe是一个控制台程序,如果没有出现控制台窗口,就无法正常执行它(尽管你可以使用-WindowStyle Hidden在它启动后立即隐藏它,正如你所注意到的那样)。

诀窍是在隐藏状态下执行powershell.exe 本身。一种方法是使用WshShell对象的Run方法从WSH脚本中隐藏运行PowerShell命令行,并使用wscript.exe执行WSH脚本(这不是控制台程序,所以没有出现控制台窗口)。示例脚本(JScript):

var wshShell = new ActiveXObject("WScript.Shell");
wshShell.Run('%SystemRoot%\\system32\\WindowsPowerShell\\v1.0\\powershell.exe -ExecutionPolicy Bypass -File "C:\\Scripts\\My Script.ps1"', 0, false);

如果此脚本为C:\Scripts\My Launcher.js,您现在可以运行以下命令行:

wscript "C:\Scripts\My Launcher.js"

这将在没有控制台的情况下运行启动程序脚本,然后控制台在隐藏窗口中运行PowerShell命令(Run方法的第二个参数为0)。