2016-06-14 31 views
3

これはPowerShell 4.0以降で動作します。しかし、PowerShellバージョン2.0では、Add-Typeはありません(タイプは存在しません)。Powershellバージョン2.0でZipファイルを解凍する方法は?

function unzip { 
    Add-Type -Assembly “system.io.compression.filesystem” 

    [io.compression.zipfile]::ExtractToDirectory("SOURCEPATH\ZIPNAME", "DESTINATIONPATH") 
} 
+0

私はこの質問をhttp://stackoverflow.com/questions/44030884/creating-zip-files-using-powershell/44031912#44031912 – randiel

答えて

3
function Expand-ZIPFile($file, $destination) 
{ 
$shell = new-object -com shell.application 
$zip = $shell.NameSpace($file) 
foreach($item in $zip.items()) 
{ 
$shell.Namespace($destination).copyhere($item) 
} 
} 

これは、活用のWindowsのShell.Applicationオブジェクトを経由して、zipファイルのサポートに建てられました。これを使用するには、次のコマンドを実行します。

>Expand-ZipFile .\Myzip.zip -destination c:\temp\files 

出典:http://www.howtogeek.com/tips/how-to-extract-zip-files-using-powershell/

3

PowerShellのバージョンだけの症状です。これは問題の実際の原因ではありません。 zipアーカイブを扱う関連クラスは、.NET Framework 4.5(PowerShell v4の前提条件)のSystem.IO.Compression名前空間に追加され、earlier versionsでは利用できません。 .NET Frameworkのバージョン4.5をインストールすると、PowerShell v2でもIO.Compression.ZipFileクラスを使用できるようになります。 Add-Typeコマンドレットは前のPowerShell v3では使用できませんので

ただし、

[Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.Filesystem") 

Add-Type -Assembly "System.IO.Compression.Filesystem" 

を交換する必要があります。


@FoxDeployにより示唆されるように、Shell.Application COMオブジェクトであっても、.NET Frameworkの4.5せずに箱から出して動作します代替。しかし、CopyHere()メソッドは非同期で実行されることに注意してください。つまり、実際のコピー操作が完了するのを待たずにすぐに戻ります。スクリプトから実行する場合は、スクリプトが終了したときにオブジェクトShell.Applicationが自動的に破棄され、未完了のコピー操作が中止されるため、何らかの遅延を追加する必要があります。

+0

に返信します。次のエラーメッセージが表示されます。 PS C:\ Users \ test > [Reflection.Assembly] :: LoadWithPartialName( "System.IO.Compression.Filesystem") PS C:\ Users \ test> [io.compression.zipfile] :: ExtractToDirectory( "C:\ WIN_AGENT.zip" "C:\ test \") [io.compression.zipfile]タイプが見つかりません:このタイプを含むアセンブリがロードされていることを確認してください。 行:1 char:25 + [io.compression.zipfile] <<<< ExtractToDirectory( "C:\ WIN_AGENT.zip"、 "C:\ test \") +カテゴリ情報:InvalidOperation:(io .compression.zipfile:String)[]、RuntimeException + FullyQualifiedErrorId:TypeNotFound – Raphael

+0

申し訳ありませんが、テキストの書式設定方法がわかりません... – Raphael

+0

.NET Framework 4.5がインストールされていますか? –

関連する問題