从 cmd 启动时隐藏 PsExec 窗口

从 cmd 启动时隐藏 PsExec 窗口

我正在以另一个用户的身份在同一台计算机上执行命令,如下PsExec所示cmd

PsExec.exe -u myuser -p mypass timeout 4

当我这样做时,会打开一个新的 cmd 窗口,其中包含 的输出timeout 4,该窗口会保持打开状态直到命令完成。如何防止打开或显示这个新窗口?

我最接近的结果是下面的,但这仍然不能令人满意,因为新窗口在最小化之前会显示片刻:

PsExec.exe -u myuser -p mypass cmd.exe /c "start /min timeout 4"

唯一的其他问题我发现关于这个是从开始的PowerShell,但我在标准中cmd。我在 Windows 10,PsExecv2.2 上。

答案1

我会使用 Windows 脚本主机(旧技术)来隐藏窗口。我还使用此方法通过任务计划程序执行我不想弹出的操作。

这种方法将使您能够灵活地实际控制窗口创建标志(如果没有代码就无法做到这一点)。

  • 您需要注册 JScript 处理程序通过提升的命令提示符首先,因为它不再默认注册。

像这样:regsvr32 %systemroot%\system32\jscript.dll

接下来,创建一个包含以下内容的 JScript 文本文件。


    var oShell = new ActiveXObject("WScript.Shell");
    //oShell.Popup("Test if the script is launching by removing this comment");
    oShell.Run( "PsExec.exe -u user_name -p user_pass timeout 4", 
                0 /* SW_HIDE */, 
                true /* bWaitOnReturn */
                );

现在使用命令行运行此 JScript 文件:

wscript.exe <path_to_jscript_file>或者cscript.exe <path_to_jscript_file>

使用哪一种取决于你寻求的行为。尝试一下每种方式。

答案2

我自己也找到了两个解决方案。比较简单的一个是使用PAExec,它是 的免费、可重新分发和开源等效版本PsExec。它采用相同的参数和更多参数,但不会打开额外的窗口。

对于第二个解决方案,user1292580 的评论以及 Señor CMasMas 的回答让我走上了正确的道路。关键是只将命令放入timeout脚本文件中,然后用 调用它PsExec。因此,使用此.js文件:

var oShell = new ActiveXObject("WScript.Shell");
oShell.Run("timeout 2", 0, true);

或者这个.vbs文件:

Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("timeout 2", 0, true)

然后打电话PsExec.exe wscript <the_script_file>就成功了。

答案3

  • 使用文本创建批处理文件的快捷方式PsExec.exe -u myuser -p mypass timeout 4
  • 右键单击快捷方式并选择特性
  • 捷径选项卡,设置跑步:最小化

答案4

您可以使用-d如下参数:

PsExec.exe -d -u myuser -p mypass timeout 4

相关内容