Я хочу запускать скрипты PowerShell через сервлет Java. В тестировании localhost (Windows 10 Pro 64bit) все работает нормально. Теперь я развернул свой код на удаленном сервере (Tomcat 8.5 на Windows Server 2012 R2 64bit) и попытался запустить его, но из сценариев powershell ничего не выводится. Кажется, они совсем не бегают или не общаются. (cmd_line
не печатается вообще, а check_ps_execution
остается false
.)
Я уже пытался изменить '"powershell " + ps_..._status.ps1 " + username
' на '"cmd /C powershell " + ps_..._status.ps1 " + username
', чтобы запустить его через CLI вместо PowerShell, но это имело тот же эффект.
Нет сообщения об ошибке, но нет и вывода.
Я запускаю ps-Script непосредственно на сервере через cmd и powershell, и в обоих случаях он работал нормально. Они расположены по тому же пути, что и на localhost.
public static boolean checkForwardingStatus(String username) throws IOException {
boolean forwarding = false;
boolean check_ps_execution = false;
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("cmd /C powershell " + ps_script_path + "check_forwarding_status.ps1 " + username);
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader reader = new BufferedReader(isr);
String cmd_line;
while ((cmd_line = reader.readLine()) != null) {
check_ps_execution = true;
logger.info(cmd_line);
if (cmd_line.contains("ForwardingAddress")) {
if (cmd_line.contains("[something it should contain]")) {
forwarding = true;
}
}
}
reader.close();
proc.getOutputStream().close();
if (!check_ps_execution) {
logger.error("PS Script checkForwardingStatus did not run!");
}
logger.info("Forwarding: " + forwarding);
return forwarding;
}
Скрипт PowerShell:
$user_name=$args[0]
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://[server]/PowerShell/ -Authentication Kerberos
Import-PSSession $Session
Get-Mailbox -Identity "$user_name" | fl *Forwarding*, *DeliverToMailboxAndForward*, *WindowsEmailAddress*
Что я могу попробовать запустить скрипт?
UPDATE:
Когда я захожу на сервер, запускаю PowerShell и выполняю пример сценария с моим собственным именем пользователя, он работает нормально. Но если я попробую другое имя пользователя, я получу следующий код ошибки:
FullyQualifiedErrorId : ErrorNoCommandsImportedBecauseOfSkipping,Microsoft.PowerShell.Commands.ImportPSSessionCommand
Так что, я думаю, это проблема авторизации.