2012-06-25 145 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

相关问题