2016-08-24 35 views
0

io.compression.zipfileからGet-ChildItem呼び出しの結果をフィードして、 "E:\ Applications_Server_Test"というzipファイルを作成しようとしています。 「BACKUP」と「BACKUP2」のフォルダ。Powershell - 特定のフォルダを除外しながらzipにフォルダ/ファイルを追加する

しかし、Powershellはこれを、私が解凍したいディレクトリやファイルの再帰的なコレクションではなく、 "$ items =ディレクトリとファイル名の文字列"と解釈しているようです。私はGet-ChildItemを使ってディレクトリを除外するためのチュートリアルを見つけることができます。完全なディレクトリを解凍する方法や複数のディレクトリを解凍する方法に関するチュートリアルを見つけることができますが、ディレクトリを除外して除外することはできません。誰かが私がどこに間違っているのか教えていただけますか?

$source = "E:\Applications_Server_Test" 
$destination = "E:\AST_Dump.zip" 

$items = Get-ChildItem $source -Recurse | ?{ $_.fullname -notmatch "\\backup\\?" } 

Add-Type -assembly "system.io.compression.filesystem" 
[io.compression.zipfile]::CreateFromDirectory($items, $destination) 

ありがとうございます!

+0

[PowerShellでファイルを圧縮する](http://serverfault.com/a/456496) – wOxxOm

+0

このルート "Applications_Server_Test"フォルダに6つのディレクトリと2つのファイルがあります。 BACKUP BACKUP2 DIR1 DIR2 DIR3 DIR4 Genericfile.txt Genericfile.dat 私は2つのだけBACKUPフォルダを除外していますが、私はまだ他の4つのフォルダ、任意の再帰的なファイルとフォルダと2つのルートが欲しいですレベルファイル。残りのファイルとフォルダをPowerShellで単一のzipファイルにパッケージ化したいと思います。私が欲しいものを象徴的にリンクしてパッケージ化するか、フォルダごとに.zipを作成する唯一のオプションはありますか? –

答えて

0

現在、フォルダではなくオブジェクト$ itemsをアーカイブしようとしています。残念ながら、これはうまくいきません。 バックアップフォルダを同じドライブに移動しようとすると(ドライブのレコードが変更され、データは移動しない)、「E:\ Applications_Server_Test」フォルダ全体をアーカイブし、バックアップフォルダを元に戻します。

その他のオプションは、ZipArchive.CreateEntryメソッドを使用し、ファイルをファイルにアーカイブに追加することです。しかし、これはあまりエレガントではありません;)

+0

必要なファイルごとに新しいフォルダにシンボリックリンクを作成できるので、実際にファイルをコピーする必要はありません。 – wOxxOm

+0

問題は、バックアップフォルダがアプリケーションの一部であることです。彼らは同じ場所に留まる必要があります。私はちょうどそのルートディレクトリ内の他のファイルとフォルダをつかみ、それを解凍して、BACKUPとBACKUP2だけを残したいと思っています。 –

+0

新しいフォルダにシンボリックリンクを使用するだけです:[examples](https://www.google.com/#q=powershell+create+symlink) – wOxxOm