2

私は現在の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 で実行することです。ボックスに完全にアクセスできるので、簡単になります。どうすればこれを行うことができますか?

4

3 に答える 3

8

スクリプトを ReleaseProcessing.ps1 というスクリプト ファイルに入れ、次のように実行します。

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

ローカル コンピューターで "enter release" を求めるプロンプトが表示されますが、スクリプトはリモート コンピューターに転送されて実行されます。これには、PowerShell 2.0 以降を実行していること、およびそのマシンで Enable-PSRemoting を実行して 10.0.0.2 でリモート処理を有効にしていることが必要です。また、別のマシンが関与しているため、2 番目のホップの資格情報の問題が発生する可能性があります。その場合は-Authentication、パラメータを の値で使用することを検討してCredSSPください。

于 2012-06-25T20:42:41.657 に答える
2

プロジェクトで一度使用しました。APPサーバーでWebサイトを作成する必要があり、INTサーバーから実行する必要がありました。そのため、サイト セットアップ スクリプトをアプリ サーバーに保持し、INT サーバーからリモートで実行しました。

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

これを保存して実行します。最後の行「Invoke-Command」が実行され、指定したリモート コンピューターにアクセスしてスクリプト ブロックが実行されます。

スクリプト ブロックは、最後の行で渡された引数を受け取り、スクリプト ブロック内のファイルを実行します。

リモート システムで実行する必要がある関数は、スクリプト ブロックで実行する必要があります。

お役に立てば幸いです....

于 2012-07-01T18:18:19.810 に答える
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
}
于 2016-08-04T20:07:14.933 に答える