2016-07-27 9 views
0

Meine Firma verwendet ein Oracle-basiertes Produkt namens "Hyperion". Ich glaube, dass Oracle einige High-School-Schüler angestellt hat, um die Batch-Dateien zu schreiben, um die Dienste zu starten und zu stoppen. Das Problem, das ich habe, ist, dass ich Powershell Remoting verwenden möchte, um eine Batch-Datei mit dem Namen "Stop_Hyperion.bat" auszuführen, die von Oracle bereitgestellt wird, um mehrere Prozesse und Dienste auf kontrollierte Weise zu stoppen. Leider für mich funktioniert das nicht:Batch in Remote Powershell-Sitzung ausführen, die interaktive/Umleitung erfordert

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

Es die Batch-Datei ausgeführt wird, aber die Batch-Datei enthält einen Befehl „Timeout“, die die folgenden Fehler erzeugt:

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

Wenn ich gut nutzen alten PSExec, bekomme ich den gleichen Fehler, es sei denn, ich verwende die Option -i für eine interaktive Desktop-Sitzung. Gibt es eine Möglichkeit, diese Art von interaktiver Sitzung mit PSSession durchzuführen?

Ich hätte die Batch-Datei geändert oder nur die Dienste mit Powershell-Befehle gestoppt, aber die Batch-Dateien enthalten Aufruf an andere Batch-Dateien (die auch Timeout verwenden), die noch mehr Anrufe enthalten. Es gibt so viele verschachtelte Aufrufe, dass es ziemlich lange dauern würde, um genau zu entschlüsseln, was die Batch-Dateien machen.

+0

Vielleicht können Sie "Timeout" durch ein Skript oder eine Mock-ausführbare Datei ersetzen, die nichts tut? –

+0

Nein, das wäre nicht praktisch. Wenn ich die Batch-Dateien ändern würde, würde ich einfach weitermachen und das Powershell-Skript schreiben, um das zu tun, was sie tun. Leider sind die Batch-Skripte nicht einfach, es gibt viele verschachtelte Aufrufe an andere Batch-Dateien, und viele davon enthalten auch den Timeout-Befehl. –

+0

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

Antwort

0

Sie können die Batchdateien anzeigen und eine native PowerShell-Implementierung als Ersatz erstellen.

"Stop-Service" und "Start-Service" sind Standard-Cmdlets unter Windows.

Dies kann einige der Komplexität in den gelieferten Batch-Dateien ignorieren, aber wenn es die Arbeit erledigt, ist es ausreichend. Dies ist das gleiche wie das Stoppen und Starten eines Service vom Services Manager.