如何运行需要通过Java获得管理员权限的PowerShell脚本

时间:2019-06-05 19:54:14

标签: java powershell active-directory

我正在为我们的用户创建一个简单的应用程序,以检查特定用户在PC上是否处于活动状态并返回结果。

该应用程序由两部分组成,一部分将分发给我们的年长者,他们可以设置他们的状态(会议,休息等),另一部分将由我们的下级人员使用,以检查年长者是否可以随时为您提供帮助给定时间。

它通过运行PowerShell脚本来工作,该脚本对PC进行ping操作,检查用户并将结果存储在网络共享上的(可访问)哈希表中。

这两个应用程序在被管理员使用时都可以正常运行,但是当普通用户尝试使用相同的应用程序时,就会出现问题,只是它们没有运行所需的PS脚本。

我有99%的把握要确保用户权利是罪魁祸首,但我一直在努力寻找足够简单的解决方案。

我还设置了一个GPO(通过gpresult和rsop.msc检查了PC),理论上应该允许它:

计算机配置>策略>管理模板> Windows组件> Windows PowerShell-打开脚本执行-允许所有脚本。 (不安全,但这只是出于测试目的:))

运行脚本的Java代码段如下所示:

run_script(String path) throws IOException {

String command = String.format("powershell.exe -executionpolicy bypass -file %s",path);

String result;

Process powerShellProcess = Runtime.getRuntime().exec(command);
powerShellProcess.getOutputStream().close();

BufferedReader brd= new BufferedReader(new InputStreamReader(
powerShellProcess.getInputStream()));

while ((result= brd.readLine()) != null) {
System.out.println(result);
              }

brd.close();

BufferedReader err= new BufferedReader(new InputStreamReader(
powerShellProcess.getErrorStream()));

while ((line = err.readLine()) != null) {
System.out.println(result);
              }
err.close();

}

仅重复这一重要部分,当管理员运行该应用程序时,一切运行良好,只有普通用户无法获得预期的结果。

最后,我的问题:)

是否可以通过Java应用程序在没有管理员权限的情况下在Java远程计算机上运行类似的代码,并且有其他方法可以获取所需的结果(ping PC,检查用户,不使用PowerShell返回结果)?

在此先感谢您的任何建议!

0 个答案:

没有答案