PSexec版权输出

问题描述 投票:0回答:6

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

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

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

谢谢
马修

powershell psexec sysinternals
6个回答
24
投票

PsExec v2.2 附带

-nobanner
选项。


9
投票

似乎没有办法阻止它发生,但作为解决方法,您可以重定向 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%

3
投票

我知道这是一个相当老的问题,但由于它被标记为

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
以外的程序测试过此解决方案,所以请小心使用。


2
投票

你尝试过这个吗:

psexec.exe -nobanner -accepteula

0
投票

它对我有用:

(.\PsExec.exe -h \$Server powershell -ExecutionPolicy ByPass -NoProfile -NonInteractive -NoLogo -File "C:$WorkFolder$File") | Findstr /v“系统内部” | Findstr /v“PsExec” | Findstr /v“Russinovich”

© www.soinside.com 2019 - 2024. All rights reserved.