有誰知道我如何加載DLL而不在每個遠程服務器上使用我正在使用持久連接並運行invoke-command cmdlet?Powershell版本2加載DLL用於持久連接的調用命令scriptblock
我正在使用DotNetZip備份約13臺服務器上的文件夾。一切都在本地工作,但是當它到達遠程服務器(陣列中的第一個服務器是本地服務器)時,它就會出錯,因爲它在遠程服務器上看不到DLL。
我在一臺服務器上執行該腳本,它應該拉上拉鍊夾每個遠程服務器上:
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-一,網絡share.aspx。 –
@KeithHill是的,我得到了與.NET 3.5 SP1安裝錯誤。當我做'[environment] :: Version'時,它是2.0 ...不知道它是否重要...有趣的是,我甚至無法在Win7上用PS3 CPT2安裝'HRESULT:0x80131515'調用LoadFrom。沒有備用數據流...在PS2上使用XP很好。儘管我能夠從UNC路徑調用.NET控制檯程序。 –
感謝您的快速回復:)我只會咬緊牙關,將這個DLL複製到我的所有遠程機器上。如果DLL不存在,也許甚至可以將它添加到我將運行的腳本中,只需將其複製即可。再次感謝! – user1161625