Как я могу запустить скрипт PowerShell, который требует прав администратора через Java - PullRequest
0 голосов
/ 05 июня 2019

Я создаю простое приложение для наших пользователей, которое проверяет, является ли конкретный пользователь активным на ПК, и возвращает результат.

Приложение состоит из двух частей, одна из которых будет распространяться среди наших пожилых людей, которые могут установить их статус (встреча, перерыв и т. Д.), А другая будет использоваться нашими юниорами, чтобы проверить, доступен ли старший для оказания помощи в любом данное время.

Он работает путем запуска сценария PowerShell, который проверяет связь с ПК, проверяет пользователя и сохраняет результат в (доступной) хеш-таблице на сетевом ресурсе.

Оба приложения отлично работают при использовании администратором, но проблемы возникают, когда обычный пользователь пытается сделать то же самое, он просто не запускает необходимые сценарии PS.

Я на 99% уверен, что здесь виноваты права пользователя, но я изо всех сил пытаюсь найти достаточно простое решение.

Я также настроил объект групповой политики (проверил ПК через gpresult и rsop.msc), который теоретически должен это разрешать:

Конфигурация компьютера> Политики> Административные шаблоны> Компоненты 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 и есть ли альтернативы для получения желаемого результата (пинг компьютера, проверка пользователя, возврат результата без использования PowerShell)?

Заранее благодарю за любые предложения и советы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...