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