我正在从Java程序执行.exe程序,发送字符串作为命令行参数。 .exe程序在控制台命令行参数上运行和打印,我在java中通过BufferedReader对象读取它。阅读之后我发现这个论点并没有完全发挥作用。 这是我发送的字符串。
String script3 = "$tempDoc = '<QueryList><Query Id=\"0\" >';$selectNodes = $doc.SelectNodes('/QueryList/Query/Select');$invalidLog=\"\" \r\n" +
" foreach($s in $selectNodes)\r\n" +
"{$s=$s.Path -replace'\"';if($logs -contains $s){$tempDoc+='<Select Path=\"'+$s+'\">*</Select>';}else{if(!$invalidLog){$invalidLog = $s;}else {$invalidLog=$invalidLog +',' + $s;}}} $tempDoc += '</Query></QueryList>';$query = $tempDoc;$Results='<Error>EventLogNotFoundException:Unable to find '+$invalidLog+' event logs.</Error>';\r\n" +
"$slp = \"false\"}else {$Results= $tempResult};$flag=\\\"false\\\";}else{if($Results.count -eq 0){$Results +=$tempResult;}else {$tempResult.removeAt(0);$Results += $tempResult;}\r\n" +
"$startTime=$endTime;}}}}\r\n" +
"$Results+= '<EndofPoll>';\r\n" +
"$RunspacePool.Close() | Out-Null\r\n" +
" $RunspacePool.Dispose() | Out-Null \r\n" +
" $counter=$counter+1;$Results | Out-String;if($slp -eq \\\"true\\\"){sleep $SleepSeconds ; [Console]::Out.Flush();[System.GC]::Collect();invoke-command -scriptblock {[Console]::Out.Flush();[System.GC]::Collect()}}}}\"";
从BufferedReader对象读取后,我发现它是
$tempDoc = '<QueryList><Query Id=0 >';$selectNodes = $doc.SelectNodes('/QueryList/Query/Select');$invalidLog="
foreach($s in $selectNodes)
{$s=$s.Path -replace'';if($logs-contains
我有什么遗失的吗?感谢。