2016-07-27 1 views
0

Моя компания использует продукт на базе Oracle под названием «Hyperion». Я считаю, что Oracle наняла некоторых учеников средней школы, чтобы написать пакетные файлы, чтобы начать и остановить службы. Проблема заключается в том, что я хотел бы использовать Powershell Remoting для выполнения пакетного файла с именем «Stop_Hyperion.bat», который предоставляется Oracle в целях остановки нескольких процессов и сервисов контролируемым образом. К сожалению, для меня это не работает:Выполнение партии в сеансе Remote Powershell, требующем интерактивного/перенаправления

$Session = New-PSSession -ComputerName HyperionServer1 -Credential $PSCredential 
Invoke-Command -Session $Session -ScriptBlock {C:\Scripts\Stop_Hyperion.bat} 

Он выполняет командный файл, но пакетный файл содержит команду под названием «Тайм-аут», который генерирует следующее сообщение об ошибке:

ERROR: Input redirection is not supported, exiting the process immediately. 
    + CategoryInfo   : NotSpecified: (ERROR: Input re...ss immediately.:String) [], RemoteException 
    + FullyQualifiedErrorId : NativeCommandError 
    + PSComputerName  : HYPERIONSERVER1 

Если я использую хорошо старый PSExec, я получаю ту же ошибку, если не использую параметр -i для интерактивного сеанса рабочего стола. Есть ли способ выполнить такую ​​интерактивную сессию с PSSession?

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

+0

Возможно, вы можете заменить 'timeout' на скрипт или макет исполняемого файла, который ничего не делает? –

+0

Нет, это было бы непрактично. Если бы я собирался изменить пакетные файлы, я бы просто начал писать сценарий powershell, чтобы делать то, что они делают. К сожалению, пакетные скрипты не просты, в других командных файлах много вложенных вызовов, и многие из них также содержат команду тайм-аута. –

+0

'@() | C: \ Scripts \ Stop_Hyperion.bat'? – PetSerAl

ответ

0

Вы можете посмотреть пакетные файлы и создать собственную реализацию PowerShell в качестве замены.

«Stop-Service» и «Start-Service» являются стандартными командлетами, доступными в Windows.

Это может игнорировать некоторые сложности в поставляемых пакетных файлах, но если он выполняет задание, этого достаточно. Это то же самое, что останавливать и запускать сервис у менеджера служб.

Смежные вопросы