PowerShell で DotNetZip を使用する

DotNetZipは、.NET Frameworkで簡単にZipファイルを操作するためのライブラリです。

PowerShellでも使用可能だということをnoraさんのブログ記事「.NETでZIPを操作するライブラリ・DotNetZip Library」にて教えていただきましたので、やってみました。

DotNetZipライブラリの入手についてはnoraさんのブログを参照ください。

 

DotNetZipライブラリを入手後、解凍してできた Ionic.Zip.dll が C:\Work に配置されている前提で話を進めます。適宜読み替えてください。

まずは、Ionic.Zip.dll を読み込みます。

[System.Reflection.Assembly]::LoadFrom("c:\work\Ionic.Zip.dll");

 

次に、New-Objectコマンドレットで ZipFileのインスタンスを作成します。

$zipfile =  new-object Ionic.Zip.ZipFile

 

あとは圧縮したいファイルやフォルダを追加します。

ファイルを追加する場合は AddFileメソッドを使用します。

AddFileめっそっどの第1引数は、作成するZipに含めるファイルを指定します。

第2引数は、Zip内に作成するフォルダ名を指定します。

この引数を指定すると、第1引数に指定したファイルが第2引数で指定したフォルダの中に作成されます。

たとえば、次のコードはMyLib.dll というファイルを、Zipファイル内にLIB1というフォルダを作成して配置します。

このようにしておくと、解凍されたときにLIB1というフォルダが作成され、その中にMyLib.dllが解凍されます。

$zipfile.AddFile("C:\Work\MyLib.dll","LIB1")

フォルダを追加する場合は、AddDirectoryメソッドを使用します。第1引数に圧縮したいフォルダを指定します。

次のコードはC:\Work2というフォルダを追加します。

$zipfile.AddDirectory("C:\Work")

圧縮するファイルやフォルダの追加が終わったら、Saveメソッドを使用して実際に圧縮ファイルを作成します。Saveメソッドの第1引数に保存ファイルパスを指定します。

次のコードはC:\Work2 の下に Test.zip という名前でZipファイルを作成します。

$zipfile.Save("C:\Work2\test.zip")

最後に、オブジェクトを破棄します。

$zipfile.Dispose()

上記をまとめたコードは下記の通りです。

[System.Reflection.Assembly]::LoadFrom("c:\work\Ionic.Zip.dll")
$zipfile =  new-object Ionic.Zip.ZipFile
$zipfile.AddFile("C:\Work\MyLib.dll","LIB1")
$zipfile.AddDirectory("C:\Work")
$zipfile.Save("C:\Work2\test.zip")
$zipfile.Dispose()

VimをインストールしてPowerShellから使用する

Vimの入手、インストール、PowerShellからの使用について説明したいと思います。

入手

日本語版VimはKaoriYa.netさんのところから 入手可能です。

現時点で最新版は7.1のようです。 


インストール

 Ver.7.1で説明します。

vim71-20080531-kaoriya-w32j.exe をダウンロードしてきたら ダブルクリックして解凍します。

vim71-kaoriya-w32j というフォルダが作成されその中にファイルができあがります。

このフォルダをリネーム(vim71としました)して好きな場所に移動してください。(C:\Program Files\vim71 へ移動したものとします)


起動

PowerShellから起動できるようにするための前準備をしましょう。

まずはプロファイルを開いて、下記の1行を追加します。

Set-Alias vim 'C:\Program Files\vim71\vim.exe'

プロファイルの場所は、コマンドラインで$Profileと入力することで確認できます。 存在しない場合は新規で作成してください。

プロファイルへの書き込みが完了したら、PowerShellを再起動し、コマンドラインで

PS > vim

と入力します。するとPowerShell上でvimエディタを使用することができるようになります。

PowerShell用エディタ

皆さんはPowerShellのスクリプト開発に、どのエディタを使用していますか?

 

PowerShellのスクリプトはテキストベースなので、メモ帳さえあれば作成することが可能です。

世の中にエディタはたくさんありますが、その中でも Power GUIは PowerShell専用のエディタが含まれています。

残念ながら日本語版はないのですが、あまり迷わずに使うことができると思います。

入手先は、http://www.powergui.org/downloads.jspa です。

特徴としては、

  • コマンドレットや関数など色分け表示できる
  • VB.NETやC#のようにregionでくくることができる
  • インテリセンスによるコード補完
  •  ステップ実行

などなど、スクリプト開発に欠かせない機能が盛りだくさんです。

詳細について、後日紹介していきたいと思います。

 

もう1つ紹介したいのがVimです。

UNIXユーザーとかにはおなじみのViですが、日本語Windows対応のVimが存在します。

KaoriYa.netさんのところから入手可能です。

これについてもあとで紹介したいと思います。

 

これ以外で、PowerShellの開発に使用しているエディタがありましたら、ぜひ情報をお寄せください。