如何在任务计划程序中 运行 a .ps1 脚本时隐藏 PowerShell window?

How to hide the PowerShell window when running a .ps1 script in Task Scheduler?

我正在尝试 运行 使用任务计划程序的 PowerShell 脚本,它会弹出一个 PowerShell 命令控制台 window。

有没有办法在 运行 运行脚本并隐藏 window 时禁用它?

我已尝试 -WindowStyle Hidden,但 PowerShell 命令控制台 window 仍然弹出。

由于powershell.exe是一个控制台程序,如果没有它的控制台window出现,你不能正常执行它(尽管你可以在它启动后不久通过使用-WindowStyle Hidden隐藏它,正如你所指出的)。

诀窍是在隐藏状态下执行powershell.exe 自身。一种方法是使用 WshShell 对象的 Run 方法来 运行 隐藏在 WSH 脚本内部的 PowerShell 命令行,然后使用 wscript.exe(这不是一个控制台程序,所以没有控制台 window 出现)。示例脚本 (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"

这个 运行 是没有控制台的启动器脚本,然后 运行 是隐藏 window 中的 PowerShell 命令(Run 方法的第二个参数是 0).