Excel PowerShell Tool

Excel から直接 PowerShell が可能になる VSTO アドイン Excel PowerShell Tool (=PS Tool) を公開します。

ダウンロード ↓↓↓

ExPSTool-0-5-0-0.zip (1.42 mb)

 

(2013/05/28) 新バージョンできました!! →  Excel PowerShell Tool Version 1.0

 

Windows は基本的に GUI 操作で、大抵の作業はそれで間に合います。
しかし、バッチ処理的な作業には不向きなので、unix のシェル使いからは常に批判の的でした。
その様な状況で MS が出した回答が PowerShell です。

PowerShell はパイプラインをオブジェクトの配列が流れるのが特徴で、
unix のそれがテキストを扱うのとは基本思想が違います。
どちらが優れているかは一長一短ですが、私は PowerShell を勉強して目から鱗が落ちました(本当)

PowerShell はオブジェクトの「配列」がパイプラインを流れます。
配列≒表→Excel という発想で、Excel と PowerShell の融合を試みました。
初めは PowerShell の出力を Excel に取り込むのが目的でしたが、
Excelテーブル≒CSV → PowerShell という流れも制御できるようになりました。
その結果、Excel から ActiveDirectory の管理等が可能になる PS Tool が生まれました。

PowerShell コンソールで Get-Service を実行すると、

 

こんな感じの出力になりますが、 PS Tool で実行すると。

 

各項目が自動的にセルに配置されている事がわかります。

PowerShell では、「書式ファイル」による暗黙のフィルターがあります。
PS Tool ではある程度の解析を行っていますが、不明な点も残っています。
この様な場合も、Format-Table / Format-List コマンドレットを使えば、コンソールと同じ出力が得られるようになっています。
※画面サイズに制限がなく、出力が潰れない点では Format-XXX より優れているかも?

 

 

この様に、PowerShell の出力を簡単に Excel に取り込む事ができます。

現場にいるとよく聞くのが、データを効率よく Excel に読み込みたいという意見です。
多くの場合、(古の)CSVファイルでやり取りするわけですが、文字コードやデータ型の問題で結構苦労します。
XMLにでもすれば解決する・・・とは行きません。 XMLはユーザーが編集するには敷居が高いのです。

PS Tool を使えば、CSVファイルに関する多くの問題が解決します。
Excel の文字コードは Unicode なので、PowerShell との相性が良いです。
セルは時刻型を直接受け取れるので、時刻と文字列の変換も不要です。
セルを文字列にしておけば、0詰め数字の問題も気になりません。

 

得られたデータをテーブル化する事で大きな恩恵が得られます。
それは、テーブルを Import-Csv を使う感覚で、PowerShell に渡す事が出来るからです。
例として、ActiveDirectory の新規アカウントを一気に登録する場合を想定してください。 

これは、TableUserNew という名のテーブルに、新規アカウントに必要なデータを登録した例です。

TableUserNew を指定して、new-user.ps1 という登録用のスクリプトを実行した結果です。(スクリプトはインストーラーにサンプルとして附属しています)

ちゃんと登録できました。
必要なスクリプトを用意すれば、多くの環境で Excel が管理ツールになるわけです。

(01/21 new-user.ps1 ソース追加)

# Get-ADUserにてADUserObject Import-Csv形式の情報がパイプで流れてくるので、それを順次処理する
# $inputはパイプを示す予約変数
$input | foreach {
    try {
	# New-ADUserを使って必要なPropertyを設定していく 
	# -PassThru でADUser Objectを拾う -ErrorAction は try-catch に必要
	$res = New-ADUser -name $_.Name -SamAccountName $_.SamAccountName `
		-Surname $_.Surname -GivenName $_.GivenName -DisplayName $_.DisplayName `
		-Path $_.Path `
		-PassThru -ErrorAction stop
			
	# パスワードの設定
	$res | Set-ADAccountPassword -Reset `
		-NewPassword (ConvertTo-SecureString -AsPlainText $_.Password –Force)`
		-ErrorAction stop
			
	# アカウントの有効化
	$res | Enable-ADAccount -ErrorAction stop
		
	"OK"
    }
    catch {
    	$Error[0].ToString()
    }
}
 

PowerShell は大変優れたシェル環境ですが、どうも認知度が低い感じがします。
PS Tool が PowerShell の普及に役立てば幸いです。

動作は、 Win7/8、 Server 2008R2/2012、 Excel 2010/2013 で確認しています。
ご意見、ご感想等お待ちしています。



スポンサーリンク

Calendar

<<  9月 2017  >>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

View posts in large calendar

Month List

Twitter