2016-07-27 106 views
0

我的公司使用一種名爲「Hyperion」的基於Oracle的產品。我相信Oracle聘請一些高中學生編寫批處理文件來啓動和停止服務。我遇到的問題是我想使用Powershell Remoting來執行一個名爲「Stop_Hyperion.bat」的批處理文件,該文件由Oracle提供,用於以受控方式停止多個進程和服務。不幸的是,我這不工作:在需要交互/重定向的遠程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命令停止服務,但批處理文件包含調用其他批處理文件(也使用超時),其中包含更多的電話。有太多的嵌套調用,需要一段時間才能精確地解開批處理文件正在做的事情。

+0

也許你可以用一個腳本或模擬可執行文件替換'超時',什麼都不做? –

+0

不,這不實際。如果我要修改批處理文件,我會繼續編寫powershell腳本來完成他們正在做的事情。不幸的是,批處理腳本並不簡單,有很多嵌套的調用其他批處理文件,其中許多還包含timeout命令。 –

+0

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

回答

0

您可以查看批處理文件,並創建一個本地PowerShell實現作爲替換。

「停止 - 服務」和「啓動服務」是在Windows上使用標準的cmdlet。

這可能會忽略一些中提供的批處理文件的複雜性,但如果它能夠完成任務,就足夠了。這與從服務管理器停止並啓動服務相同。

相關問題