因为编码问题,java经过远程调用winrm形式,在控制台返回字符中,包括中文时,显示???,出现中文乱码!java
经过调整$outputencoding的方式,依然出现乱码。因此采用曲线实现的方式,经过将结果重定向输入到文件(指定文件编码格式),再读取文件的形式,得到执行脚本的结果。ide
代码以下:ui
package com.test; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import io.cloudsoft.winrm4j.client.WinRmClientContext; import io.cloudsoft.winrm4j.winrm.WinRmTool; import io.cloudsoft.winrm4j.winrm.WinRmToolResponse; public class RemoteWinrm4JTest { public static void main(String[] args) throws UnsupportedEncodingException, InterruptedException { WinRmClientContext context = WinRmClientContext.newInstance(); WinRmTool.Builder builder = WinRmTool.Builder.builder("192.168.1.128", "Administrator", "password"); //builder.setAuthenticationScheme(AuthSchemes.NTLM); builder.port(5985); builder.useHttps(false); builder.disableCertificateChecks(false); builder.context(context); WinRmTool tool = builder.build(); tool.setOperationTimeout(0L); System.out.println("========"); WinRmToolResponse resp = tool.executePs("C:/Users/Administrator/WindowsAuditPolicy.ps1 |out-file WindowsAuditPolicy_result.txt -encoding utf8"); Thread.sleep(3000); resp = tool.executeCommand("type C:\\Users\\Administrator\\WindowsAuditPolicy_result.txt"); String out = resp.getStdOut(); String err = resp.getStdErr(); System.out.println(out); context.shutdown(); } }