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.
Vielleicht können Sie "Timeout" durch ein Skript oder eine Mock-ausführbare Datei ersetzen, die nichts tut? –
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. –
'@() | C: \ Scripts \ Stop_Hyperion.bat'? – PetSerAl