2012-01-20 3 views
0

永続的な接続で使用している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

答えて

1

私はあなたがこれを行うには、リモートマシンにIonic.Zip.dllをコピーする必要があるとしているかなり確信しています。あなたのリードシステムからそれを共有し、UNCパスを使用してリモートマシンからロードすることができます(私はそれを試みたことはありません...今のところ...-)

アップデートUNCのパスを[System.Reflection.Assembly]::LoadFromに渡すことができることを確認しました。

アップデート2 - アセンブリがロードされたが、それがうまく動作しませんでした使用:私はDLLのローカルコピーをロードすると

Exception calling "AddFile" with "1" argument(s): "Request for the permission of type 'System.Security.Permissions.File 
IOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed." 
At line:1 char:11 
+ $z.AddFile <<<< ("C:\AMCleanUp.log") 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : DotNetMethodException 

はADDFILEの方法がうまく働きました。あなたはこのDLLをすべてのサーバーにコピーすることができます。

+0

.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。 –

+0

@KeithHill私は.NET 3.5 SP1がインストールされているとエラーが表示されます。面白いことに、PS3 CPT2に 'HRESULT:0x80131515'がインストールされた状態でWin7で' LoadFrom'を呼び出すこともできませんでした。代替データストリームもありません... PS2でXP上でうまく動作しました。私はUNCのパスから.NETコンソールプログラムを呼び出すことができました。 –

+0

あなたのクイックレスポンスありがとうございました:)私は弾丸を噛んで、このDLLをすべてのリモートマシンにコピーします。 DLLが存在しない場合は、それをコピーするだけでスクリプトに追加することさえできます。再度、感謝します! – user1161625

0

私はすでにリモートセッションでリモートリソースにアクセスするとあなたの問題をダブルホップ認証に関係していると思います。このリンクをチェックしてくださいhttp://www.ravichaganti.com/blog/?p=1230

関連する問題