2012-06-25 205 views
2

上運行我目前的PowerShell腳本執行PowerShell腳本本地到遠程計算機

$release = read-host "enter release" 
$fullPath = "10.0.0.3" 
$fullPath = $fullPath + $release 
$fullPath = $fullPath + ".bat" 
start-process $fullPath 

目前我登錄到遠程機器來運行該代碼在這個例子中10.0.0.2。代碼然後從另一個遠程機器(10.0.0.3)中提取文件。我想要做的是從我的本地機器(10.0.0.1)執行這個腳本並讓它在.2上運行。我可以完全訪問該框,以便更容易。我該如何去做這件事?

回答

2

我曾經在項目中使用過這一次。我需要在APP服務器上創建網站,並且必須從INT服務器運行。所以我保留了App服務器上的站點設置腳本,並從INT服務器遠程運行。

$script = 
{ 
$Filetoexe = $args[0] 
invoke-expression "$Filetoexe" 
} 
Invoke-Command -ComputerName <Computername> -credential <credentials> -ScriptBlock $script -Args "D:\sitesetup.ps1" 

保存並運行此操作。最後一行「Invoke-Command」將被執行,它將訪問您已經提供的遠程計算機並執行腳本塊。

腳本塊接受最後一行傳遞的參數並執行腳本塊中的文件。

您需要在遠程系統上運行的任何功能都必須在腳本塊中完成。

希望這是有幫助的....

+1

需要改變 「$ Filetoexe = ARGS [0]」 至「$ Filetoexe = $ args [0]」讓它起作用 – letsgetsilly

8

把腳本到一個腳本文件說ReleaseProcessing.ps1並執行它,像這樣:

Invoke-Command -ComputerName 10.0.0.2 -FilePath .\ReleaseProcessing.ps1 

系統將提示您在本地計算機上的「進入釋放」,但腳本被轉移到運行於遠程計算機。這要求您運行PowerShell 2.0或更高版本,並且已通過在該機器上運行Enable-PSRemoting在10.0.0.2上啓用遠程處理。另外,由於還有另一臺機器,你可能會遇到第二跳信任問題。如果是這種情況,請考慮使用值爲CredSSP-Authentication參數。

0

這個效果很好,如果你通過PowerShell中有你的遠程服務器上安裝遠程訪問

$scriptPath = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition 
$StrServers = Get-Content -Path "$scriptPath\Environment\$strEnvironment.txt" 


$content = [IO.File]::ReadAllText("$scriptPath\environment\test.txt") 
foreach ($strServer in $content) 
{ 
Invoke-Command -ComputerName $strServer -FilePath $scriptPath\testScript.ps1 -ArgumentList $StrLog 
} 
+0

答案是在本地機器上運行VM中的powershell命令? – ChanGan

相關問題