2017-06-01 18 views
0

仲間のスクリプト作成者がこの1人を手伝ってくれることを願っています。powershellのフォルダをジッピングする

私はpowershellを使用して特定のフォルダを解凍しようとしています。 マイフォルダ構造は

バックアップ
BoxIntranet
コンポーネント
コンテンツ
データベース
Execの
ファイル
ログ
Multibrowser
Multibrowser \レガシー\カスタマイズ
パッケージ
ParentPortalです ParentPortal \カスタマイズ
StudentPortal
StudentPortal \カスタマイズ
更新
のWebDav

あり、より多くのファイルとフォルダが上記の一人一人にされているが、これらは私が主に興味があるものです。 PowerShellでWrite-ZipまたはCompress-Archiveのいずれかの方法を使用してすべてを圧縮しようとしていますが、私の条件は同じです。

  1. コンテンツのみ、ファイルは、データベースのフォルダがルート

  2. Multibrowser \レガシー\カスタマイズからzip形式で圧縮されなければならない、StudentPortal \カスタマイズとParentPortal \カスタマイズフォルダもバックアップする必要があります。

  3. zipファイルのルート構造には、コンテンツ、ファイル、データベース、マルチブラウザー、ParentPortal、およびStudentPortalフォルダーが必要です。コンテンツ、ファイル、データベースフォルダにはすべてが圧縮されている必要がありますが、Multibrowser、ParentPortal、およびStudentPortalフォルダには、指定されたサブディレクトリとその中のすべてのファイルのみが必要です。

コード:

$FilesAndInclude = @("Content", "Files", "Database", "Multibrowser\Legacy\customisation", 
        "StudentPortal\customisation", "ParentPortal\customisation", 
        "BoxIntranet\customisation") 
$FilesToExclude = @("connectionstrings.config", "inc_dbconn.asp") 
Get-ChildItem -Path "C:\Folder" -Include $FilesAndInclude -Recurse -Exclude $FilesToExclude| 
    Compress-Archive -DestinationPath "Archive.zip" 

私は上記を試してみたと私は-Includeパラメータを削除した場合、それはしかし、何もしない、それはしかし、フォルダ構造を保持していないすべてをzip圧縮。

私はpowershellの中で私が何をしたのかを完了する方法はありますか?

+0

「何もしない」とは何ですか? 1つ以上のエラーメッセージがありますか? Archive.zipファイルが作成されていますか? Get-ChildItemの出力は、期待するファイル名とディレクトリ名ですか? – lit

答えて

1

最初に、-Includeパラメータを使用するのが難しい理由は、指定したものだけを排他的に含むように設計されているためです。そのように、物の名前(パスではない)を調べ、リストと照合し、リストの中の何かに合致すればそのアイテムを含めるでしょう。あなたはフォルダ名だけをリストしているので、それらのフォルダ(ではなく内容が)を含みます。だから、あなたはどんなファイルもこのようにパイプに渡されていません。そのことを回避するには、まずファイルリストを作成してから、コマンドレットにパイプしてファイルを圧縮する必要があります。

次の問題はCompress-Archiveにはパス情報が保存されないため、Write-Zipを使用する必要があります。私はあなたがそのコマンドレットに望まれるものを含めました。

$FilesAndInclude = @("Content", "Files", "Database", "Multibrowser\Legacy\customisation", 
        "StudentPortal\customisation", "ParentPortal\customisation", 
        "BoxIntranet\customisation") 
$FilesToExclude = @("connectionstrings.config", "inc_dbconn.asp") 
[array]$FilesToZip = Get-ChildItem .\* -Exclude $FilesToExclude -File 
$FilesToZip += $FilesAndInclude | ForEach{Get-ChildItem .\$_ -Exclude $FilesToExclude -File} 
$FilesToZip | Write-Zip -EntryPathRoot $(Resolve-Path .\|Select -Expand Path) -OutputPath Archive.zip 
+0

あなたはスターです。このコードは私の望むものとまったく同じではありませんでしたが、それは私に非常に良い出発点を与えました。これは私の仕事をしています:) –

関連する問題