在本地执行powershell脚本以在远程计算机上运行

时间:2012-06-25 15:02:10

标签: powershell batch-file

我有当前的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上运行。我可以完全访问该框,以便更容易。我该怎么做呢?

3 个答案:

答案 0 :(得分:8)

将脚本放入脚本文件中,例如ReleaseProcessing.ps1并按如下方式执行:

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

系统将提示您在本地计算机上“输入发布”,但脚本将传输到远程计算机并在其上运行。这要求您运行PowerShell 2.0或更高版本,并且已通过在该计算机上运行Enable-PSRemoting在10.0.0.2上启用了远程处理。此外,由于涉及另一台机器,您可能会遇到第二跳凭据问题。如果是这种情况,请考虑使用-Authentication参数,其值为CredSSP

答案 1 :(得分: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”将被执行,它将访问您给出的远程计算机,并将执行脚本块。

脚本块获取最后一行传递的参数,并在脚本块中执行该文件。

您需要在远程系统上运行的任何功能都必须在脚本块中完成。

希望它有用....

答案 2 :(得分: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
}