如何在任务计划程序中 运行 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
).
我正在尝试 运行 使用任务计划程序的 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
).