永続的な接続で使用しているinvoke-commandコマンドレットを使用している各リモートサーバーにDLLをロードする方法を知っている人はいますか?Powershell Version 2永続接続の呼び出しコマンドscriptblockに使用するDLLをロードする
DotNetZipを使用して、約13台のサーバのフォルダをバックアップしています。すべてがローカルで動作していますが、リモートサーバー(アレイの最初のサーバーはローカルサーバー)に到達すると、リモートサーバー上のDLLが表示されないため、エラーが発生します。
私は1台のサーバー上でこのスクリプトを実行し、それが各リモートサーバー上のフォルダをzip化する必要があります
foreach($i in $appServers) {
$sessionForI = New-PSSession -computername $i
Invoke-Command -Session $sessionForI -ScriptBlock {
if (!(Test-Path -path C:\\newDeploy)) {
New-Item C:\\newDeploy -type directory
}
[System.Reflection.Assembly]::LoadFrom("C:\\newDeploy\\Ionic.Zip.dll");
$directoryToZip = "C:\\Program Files (x86)\\SubDir\\$folder"
$zipfile = new-object Ionic.Zip.ZipFile
$e = $zipfile.AddSelectedFiles("name != '*.e2e'",$directoryToZip, "",1)
if (!(Test-Path -path C:\\newDeploy\\backup)) {
New-Item C:\\newDeploy\\backup -type directory
}
$zipfile.Save("C:\\newDeploy\\backup\\" + $folder+ ".zip")
$zipfile.Dispose()
}
remove-PSSession -session $sessionForI
}
ありがとうございました。
-Jim
.NET 3.5 SP1を実行していますか?そのサービスパックの時点で、管理コードはネットワーク共有から起動することができます。この記事を参照してください - http://blogs.msdn.com/b/brada/archive/2008/08/13/net-framework-3-5-sp1-allows-managed-code-to-be-launched-from- a-network-share.aspx。 –
@KeithHill私は.NET 3.5 SP1がインストールされているとエラーが表示されます。面白いことに、PS3 CPT2に 'HRESULT:0x80131515'がインストールされた状態でWin7で' LoadFrom'を呼び出すこともできませんでした。代替データストリームもありません... PS2でXP上でうまく動作しました。私はUNCのパスから.NETコンソールプログラムを呼び出すことができました。 –
あなたのクイックレスポンスありがとうございました:)私は弾丸を噛んで、このDLLをすべてのリモートマシンにコピーします。 DLLが存在しない場合は、それをコピーするだけでスクリプトに追加することさえできます。再度、感謝します! – user1161625