PsExec重定向输出和命令生成的错误不起作用

时间:2012-06-03 14:58:52

标签: logging cmd psexec io-redirection

我有一个控制台应用程序来执行此操作

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("out");
        Console.Error.WriteLine("err");
        Environment.ExitCode = 5;
    }
}

当我在cmd提示符中运行时,我得到了以下

C:\>C:\pstools\test\outnerr.exe >C:\pstools\test\out1.log 2>C:\pstools\test\err1.log
C:\>echo %errorlevel%
5
C:\>type C:\pstools\test\out1.log
out
C:\>type C:\pstools\test\err1.log
err
C:\>

这是预期的。

现在,如果我在运行窗口中运行它

cmd /c C:\pstools\test\outnerr.exe >C:\pstools\test\out2.log 2>C:\pstools\test\err2.log

这也有效,并创建了out2.log和err2.log。

现在,如果我使用psexec运行相同的。我想创建一个日志文件。它是否在本地计算机或远程计算机上创建无关紧要。 所以我运行这个命令

C:\pstools\test\psexec.exe \\127.0.0.1 cmd /c C:\pstools\test\outnerr.exe >C:\pstools\test\out3.log 2>C:\pstools\test\err3.log

从Run Window执行时,不会创建日志文件。但是,如果从命令提示符运行,则同样有效。

我需要在上面进行哪些更改才能从运行窗口创建日志文件?

PS我在这里和互联网上阅读了很多关于PsExec重定向问题的线程。我知道PsExec操纵流以使远程操作具有交互性。也许这就是这个简单的事情不起作用的原因。

2 个答案:

答案 0 :(得分:0)

尝试使用xCmd.exe,它是psexec的替代品,它将远程输出重定向到运行代码的本地控制台。我试过混合JAVA + PSEXEC非常糟糕的组合。但是在使用xcmd.exe方面取得了很好的效果,但有一个问题是它适用于32位操作系统uptil win 2k8。从win7开始,这种方法效果不佳。

答案 1 :(得分:0)

您可以使用 -lo 选项将PSExec输出写入文件

<强>思:

psexec \\<machine_ip_address> -u <username> -p <password> -lo <log_filename> <some_command>

示例:

psexec \\192.10.10.69 -u admin -p 12345 -lo paexec.log ipconfig