任务管理器中的 PowerShell 显示窗口

2023-12-06

我正在尝试创建任务计划任务,以便完全看不到正在运行的 PowerShell 脚本,因此我在 Win10 计算机上创建了一个任务,配置如下:

程序/脚本:

powershell.exe

添加参数(可选):

-WindowStyle Hidden -command "& {Out-File 'C:\temp\somefile.txt'}" -NonInteractive -NoLogo -NoProfile

当我运行此任务时,powershell 命令窗口会突然弹出,这是我不想要的。


您可以使用“应用程序主机”类型包装器来解决此问题。这是 powershell 作为基于控制台的主机的一个已知问题。

我发现最方便的方法是使用WScript.exe并运行一个 VBS 脚本,该脚本将“无形地”调用该进程,没有控制台或任务栏闪烁。

VBS代码:

On Error Resume Next

ReDim args(WScript.Arguments.Count-1)

For i = 0 To WScript.Arguments.Count-1
    If InStr(WScript.Arguments(i), " ") > 0 Then
        args(i) = Chr(34) & WScript.Arguments(i) & Chr(34)
    Else
        args(i) = WScript.Arguments(i)
        End If

Next

CreateObject("WScript.Shell").Run Join(args, " "), 0, False

将上述代码保存在扩展名为“.vbs”的文件中,并将其放置在运行任务的客户端可以运行的位置。这可能位于网络上受保护的文件共享中(如果您希望它调用的脚本仅在连接到网络时运行),或者位于客户端本地。

现在,当您调用基于控制台的脚本(PowerShell、BAT、CScript 等)时,您可以使用 WScript 显式调用此 VBS 脚本WScript.exe。添加“批处理模式”参数也是值得的//B这将抑制脚本错误和提示 - 例如,如果无法找到包装文件本身。

此时,您需要做的就是将 powershell 和您希望 powershell 运行的命令传递到此启动序列:

 WScript.exe //B "\\Path\To\Launcher.VBS" powershell.exe -ExecutionPolicy ByPass -file "\\Powershell\Script\To\Run"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

任务管理器中的 PowerShell 显示窗口 的相关文章

随机推荐