2017-02-08 4 views
0

PowerShellを使用してzipファイルを抽出します。したがって、私はこれを使用します:Load System.IO.Compression.FileSystem with Add-Type throwsエラー

Add-Type -AssemblyName System.IO.Compression.FileSystem 

# some code to download the zip file from FTP # 

[System.IO.Compression.ZipFile]::ExtractToDirectory($localpath+"\Test.zip",$localpath) 

私はエラーが発生します:Add-Type:タイプを追加できません。アセンブリ 'System.IO.Compression.FileSystem'が見つかりませんでした。

私は、その後のStackOverflowを検索し

Add-Type -Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.IO.Compression.FileSystem.dll" 

Add-Type -AssemblyName System.IO.Compression.FileSystem 

を変更それは言う:

Error: Could not load file or assembly 'file:///C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFram 
ework\v4.6.1\System.IO.Compression.FileSystem.dll' or one of its dependencies. This assembly is built by a runtime newer 
than the currently loaded runtime and cannot be loaded. 

私が実際にそのv4.6.1パスにこのDLLを見ることができます。それはそこにある。私の構文に何が間違っていますか?

答えて

1

構文に間違いはありません。問題は、アセンブリがPowerShellのバージョンと互換性がないことです。これはまさに2番目のエラーが示すものです。最初のエラーの場合、PowerShellは互換性がないためアセンブリパスを検索するパスの一部としてパスを持たないことがあります(アセンブリの正しいパスを指定した2回目の試行のエラー参照) 。

可能であれば、updating your PowerShell (and Windows Management Framework)と考えてください。 PowerShellの現在のバージョンは5です。

+0

もっと正確に言えば、Powershell V3は.NET 4.0のみをロードしますが、このタイプは.NET 4.5に含まれていますので、WMF4を使用する必要があります。 –

+0

PS3.0に.Net 4.5を使用させることはできませんか? – sodawillow

+0

いいえ。それは.NET 4.0でコンパイルされ、後で何も知らないでしょう。それが私が最新のPSとWMFにアップデートすることを提案した理由です。 –

1

Powershellバージョン5+を使用している場合は、Expand-Archiveを使用してファイルを解凍できます。このmsdnリンクを参照してください。

0

私はWin10で動作するCompress-Archiveを使用して同様の問題を抱えていましたが、Win Srv 2012 R2では構文が正しいと思っていて、dllは上記のパスごとに存在していました。私は、Win10のPowerShellのバージョンが5でWinSrvが4だったことに気がついたので、Windows Management Framework(WMF)5.1をインストールしてPSにインストールし、WinSrvR2のPSのバージョンも5だったとき、 。

関連する問題