PowerShell

PowerShellのすすめ

リンク集ではってレベルの雑さだけど、書き始めたとき役に立ったことのメモ。
1・2年前のメモを元に書くので多少情報が古いところがあるかも。

PowerShellはバッチファイルとか書いてた人ならスラっと飲み込めると思うし、いろいろとナウでヤングなこともできるのでおすすめ。

特にバッチファイル書くの好きって人は一度は触ったほうがいいと思う。できることが増えて感動する。

入門

概念を理解するにはまずここらへんを読むとわかりやすくていいと思う。

プラスアルファとしてここらへんかな。

最新バージョンにする

PowerShellは割とバージョンによって使える機能が変わるので、最新バージョンにするのが個人的おすすめ。便利機能が増えるので。

バージョン上げることによるデメリットは、バージョン上げて書いたスクリプトを配布したら、配布先のマシンもバージョン上げないと動かないってこと。

あとPowerShell ISEっていう標準IDEのUIが英語になるけど、機能としては使いやすくなるし、たいして難しい英語でもない。たしか2.0までは日本語があるんじゃないかな。

わかりやすいのはここ。

スクリプト実行ポリシーを変更する

わざわざスクリプトを書くような人にとっては、スクリプトをファイルに保存しておいて呼び出せないと意味がないと思うのだけど、初期の設定のままではそれができない。

スクリプト実行ポリシーをRemoteSignedにする、と解説されていることが多い。

(追記: Thank you for comment, @nukie_53 )
スコープを限定して実行ポリシーを設定したり、実行時にポリシーを指定したりできるので、状況に応じてそちらを選択したほうがよさそうだ。

タスクスケジューラーからの呼びかた

わざわざスクリプトを書くような人にとっては、スクリプトをタスクスケジューラーから呼び出せないと(以下略)

PowerShellスクリプトはバッチファイルで.batを叩くのと同じノリで.ps1を叩いても実行できない。

powershell.exeにスクリプトファイルを投げて走らせる必要がある。

正規表現

ナウでヤングなので、もちろん正規表現が扱える。

JSON

標準コマンドレットでJSONが簡単に扱える。
バッチファイルで地道に設定ファイルを読み書きしていた頃のことを思うと……。

たとえば「ローカルのJSONファイルを読み込んで、PowerShell上でオブジェクトとして扱う」だったら、たったこれだけ。楽。

$configObject = New-Object -TypeName PSObject
$configObject = Get-Content -Path "config.json" -Raw | ConvertFrom-Json

Excel

個人的にPowerShellの強いとこと思うのが、Excelファイルを簡単に扱えること。
さすがMicrosoft謹製、って感じ。

Excelで何かを管理することを強いられているみなさんがきっといると思うので、そんな方々にぜひおすすめしたい。

# Excelアプリケーションを開く
$excelApplication = New-Object -ComObject Excel.Application
# Excelアプリケーションを可視化 (可視化しなければバックグラウンドで動かせる)
$excelApplication.Visible = $true
# Excelブックを開く
$excelBook = $excelApplication.Workbooks.Open('sample.xlsx')
# Excelシートを開く
$excelSheet = $excelApplication.Worksheets.Item('Sheet1')
# 1行目1列目の値を"Test"にする
$excelSheet.Cells.Item(1, 1) = 'Test'

すごく楽じゃないですか?

VB.NETの機能を使う

PowerShellからVB.NETの機能を使うことができるので、これで結構幅が広がる。

ファイル選択ダイアログを出したり、

メッセージボックスを出したり、

タスクトレイアイコンにバルーンウィンドウを表示したり

など、いろいろできる。

その他よく使いそうなもの