我有一个控制台应用程序
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这不会在运行窗口执行时创建日志文件。但是,如果从命令提示符运行,则同样有效。
,我需要在上面修改什么才能让它从运行窗口创建日志文件?
PS我在这里和网上读过很多关于PsExec重定向问题的文章。我知道,PsExec操纵流以使远程操作具有交互性。也许这就是这件简单事情不起作用的原因。
发布于 2012-06-06 20:15:48
尝试使用xCmd.exe,它可以替代psexec,后者将远程输出从运行代码的地方重定向到本地控制台。我试图混合JAVA + PSEXEC非常糟糕的组合。但在使用xcmd.exe时取得了很好的效果,但有一个问题是,32位操作系统升级到2k8就能很好地工作。从win7开始,这就不太好用了。
发布于 2015-09-09 04:07:11
可以使用-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 ipconfighttps://stackoverflow.com/questions/10871344
复制相似问题