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

时间:2018-06-22 15:12:48

标签: powershell scheduled-tasks

我正在尝试使Task Schedule Task成为任务,因此正在运行PowerShell脚本是完全不可见的,因此我在配置如下的Win10计算机上创建了Task:

程序/脚本:

powershell.exe

添加参数(可选):

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

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

1 个答案:

答案 0 :(得分:0)

您可以使用“应用程序主机”类型包装器解决此问题。这是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显式WScript.exe来调用此VBS脚本。还可以抛出“批处理模式”参数//B,这会抑制脚本错误和提示,例如是否找不到包装文件本身。

在这一点上,您需要做的就是传递powershell和要Powershell运行到此启动序列的命令:

 WScript.exe //B "\\Path\To\Launcher.VBS" powershell.exe -ExecutionPolicy ByPass -file "\\Powershell\Script\To\Run"