2017-08-05 52 views
0

我需要使用JAVA中的PowerShell連接到遠程服務器。我想要在後臺完成連接,而不必提示輸入密碼並導航到服務器上的所需位置(C:\ Events \ rootdir \),我將從本地計算機上傳目錄。Java - 使用PowerShell遠程連接到服務器並繞過密碼提示

目前,我使用下面的查詢:

String command = "powershell.exe Invoke-Command -Credential myusername -ComputerName 192.x.x.x -FilePath C:\\Events\\rootdir\\ 
Process powerShellProcess = Runtime.getRuntime().exec(command); 
powerShellProcess.getOutputStream().close(); 

然而,這樣做我正在輸入密碼的提示:

enter image description here

什麼我需要做的在命令字符串中包含密碼調用,以便直接連接到C:\ Events \ rootdir \,繞過此密碼提示?

回答

0

您需要先創建一個擁有用戶名和密碼的憑證。只需使用exec就會很痛苦。使用此庫:https://github.com/profesorfalken/jPowerShell您可以在其中啓動PowerShell會話並執行多個命令。

或建立一個.ps1並執行該操作。

要創建憑據對象:

$Username = 'labuser' 
$Password = 'labuser' 
$pass = ConvertTo-SecureString -AsPlainText $Password -Force 
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username,$pass 

然後你可以使用$Cred傳遞作爲參數傳遞給了-Credential開關。

+1

嗨Strelok,謝謝你的回覆。我繼續建議的路徑。我修改了我的代碼以創建每次運行時建議的.ps1文件(如果它不存在),並從那裏執行Process powerShellProcess = Runtime.getRuntime().exec(command),我將此額外行添加到.ps1正在創建:invoke-command -ComputerName「xxx」-ScriptBlock {任何你想做的事情} -credential $ Cred。所以那個伎倆。 – kokodee