2013-02-14 75 views
0

我正在使用psexec在系统上执行.bat。这将指纹系统并将信息返回给我。我使用的命令是:psexec参数不正确

psexec \\server -u username -p password -s -i -c .\fingerprint.bat 

这适用于大多数服务器,但其中一些不能与-i开关一起使用。有没有办法说,如果失败了,请尝试在没有-i的情况下再次执行此操作?我正在使用powershell来执行脚本。

$servers = get-content .\input.txt 

foreach($server in $servers) { 
    psexec \\$server -u username -p password -s -i -c .\fingerprint.bat 
} 
+0

从来没有工作过与PowerShell,但必须有一些方法来捕获执行代码的psexec。例如相当于bash的'$!'。 – 2013-02-14 16:13:16

回答

2

检查$ LastExitCode自动变量。 PowerShell在调用EXE时会被设置。无论退出代码EXE返回到$ LastExitCode。我对成功很肯定PSEXEC返回0,和其他任何手段失效如:

foreach($server in $servers) { 
    psexec \\$server -u username -p password -s -i -c .\fingerprint.bat 
    if ($LastExitCode) { 
     psexec \\$server -u username -p password -s -c .\fingerprint.bat 
    } 
} 

这是使用PowerShell的把戏,将评估是否为true,如果$ LastExitCode是什么,但0

+0

谢谢!我会给你一个镜头。 – Jeff 2013-02-15 15:36:11

+0

我将使用if($ lastExitCode -ne 0)。非常感谢。任何方式来获取最后的错误信息? – Jeff 2013-02-15 15:44:15

+0

你应该可以像这样捕获stderr/stdout输出:'$ res = psexec ...。\ fingerprint.bat 2>&1'。 – 2013-02-15 16:45:39