2016-08-04 47 views
0

我試圖在使用powershell的遠程計算機上的cmd窗口中啓動批處理文件。如何使用powershell在命令提示符下遠程啓動批處理文件

這是我的ps1腳本。

function Run-BatchFile 
{ 
    param($computer = "mycomputer") 
    $batfilename = "mybatch.bat" 
    Invoke-Command -ComputerName $computer -ScriptBlock {param($batfilename) "cmd.exe /c C:\Batchfiles\$batfilename" } -ArgumentList $batfilename -AsJob 
} 

Run-BatchFile 

當我從myhost的機器,我得到這個輸出運行它..

Id  Name   PSJobTypeName State   HasMoreData  Location    Command 
--  ----   ------------- -----   -----------  --------    ------- 
5  Job5   RemoteJob  Running  True   mycomputer   param($batfilename) "c... 

但是,沒有命令提示符,批處理文件在遠程機器上啓動。

任何線索,我做錯了什麼或如何調試,因爲它看起來像它的工作正常。

感謝,

約翰。

回答

0

嘗試使用符號運算符來啓動你的腳本:

& "cmd.exe /c C:\Batchfiles\$batfilename" 

基本上,因爲你已經得到了引號PowerShell的將把它作爲一個字符串,而不是執行命令的命令。 &符號強制Powershell將其視爲命令。有關更多信息,請參見here

+0

不幸的是,這並沒有起到作用。我也嘗試了cmd.exe的完整路徑。將「」cmd.exe/c C:\ Batchfiles \ $ batfilename「放入一個$ command變量中,然後在沒有&的情況下運行該命令。 – John

0

您也可以使用PowerShell啓動批處理文件。

function Run-BatchFile 
{ 
param($computer = "mycomputer") 
$batfilename = "mybatch.bat" 
Invoke-Command -ComputerName $computer -ScriptBlock {param($batfilename) "powershell.exe -NoLogo -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File C:\Batchfiles\$batfilename" } -ArgumentList $batfilename -AsJob 
} 

Run-BatchFile 

請記住,我沒有測試這個確切的代碼,但一般的想法應該工作。

相關問題