Powershell Version 2 Load DLL for use on persistent connection's invoke command scriptblock

StackOverflow https://stackoverflow.com/questions/8949113

  •  07-11-2019
  •  | 
  •  

Pergunta

Does anyone know how I can load a DLL without having it on each remote server I am using in a persistent connection and running the invoke-command cmdlet with?

I am using DotNetZip to backup folders on about 13 servers. Everything is working locally, but when it gets to a remote server (the first one in the array is the local server), it errors because it doesn't see the DLL on the remote server.

I execute this script on one server and it should zip up folders on each remote server:

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
    }

Thank you .

-Jim

Nenhuma solução correta

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top