【问题标题】:PSexec copyright outputPSexec 版权输出
【发布时间】:2024-09-05 13:35:02
【问题描述】:

有谁知道,如何在运行 PSExec 时禁用“版权标头”的出现? Everutime 我运行“./psexec ...”命令时看到此消息:

PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

这真的很烦人,它会膨胀我的脚本输出。

谢谢
马修

【问题讨论】:

    标签: powershell psexec sysinternals


    【解决方案1】:

    PsExec v2.2 带有-nobanner 选项。

    【讨论】:

      【解决方案2】:

      似乎没有办法阻止它发生,但作为一种解决方法,您可以重定向 STDERR 这将抑制输出,

      psexec \\remotemachine command 2>nul
      

      【讨论】:

        【解决方案3】:

        或者你可以做得更好

        set F1=find /v "PsExec v2.11 - Execute processes remotely"
        set F2=find /v "Copyright (C) 2001-2014 Mark Russinovich"
        set F3=find /v "Sysinternals - www.sysinternals.com"
        set FILTER=%F1%^|%F2%^|%F3%
        
        psexec \\remotemachine command 2>&1 | %FILTER%
        

        【讨论】:

          【解决方案4】:

          我知道这是一个相当老的问题,但由于它被标记为 PowerShell 并且没有 PowerShell 的具体回复,这里是:

          我想在远程机器上获取环境变量%SystemRoot% 的值,而不启用WinRM
          我在PowerShell 中的调用是:
          $ret = & PsExec.exe \\RemoteMachine powershell.exe -Command '$env:SYSTEMROOT'

          这返回了一个Object[] 类型的数组,每行输出一个元素。 样本输出,带有对应的数组索引:

          PS> $ret
          (0)
          (1) PsExec v2.2 - Execute processes remotely
          (2) Copyright (C) 2001-2016 Mark Russinovich
          (3) Sysinternals - www.sysinternals.com
          (4)
          (5) C:\WINDOWS
          

          如您所见,我想要的输出是返回数组中的第 6 个值。

          这也适用于输出多行的PowerShell 脚本或命令,因为每个打印的行都作为一个新元素附加到数组中。

          考虑到这一点,我们可以使用以下内容整理返回的输出:
          $ret = $ret[5..($ret.Count - 1)]

          这基本上只是删除了前五个元素。

          虽然我没有用PowerShell 以外的程序测试过这个解决方案,所以请小心使用。

          【讨论】:

          • 你先生,节省了我一些重要的时间,并在这个问题上挠头。 ta!
          【解决方案5】:

          你试过了吗:

          psexec.exe -nobanner -accepteula
          

          【讨论】: