【PowerShell】いつも忘れがちな何かを自動化

こんばんは。羽柴玲です。
今日は、PowerShellについて書きたいと思います。

なぜPowerShellなのか

なぜ、PowerShell?って感じなんですが、
仕事終了時に必ずやらなければならないことがあるのに、忘れてしまう。
そんな現象を解消するために、ちょっと工夫をしようと思ったのきっかけです。
まぁ、作成したソースはすごく簡単なものなんですけど笑

そもそもPowerShellってなに?

Windows PowerShell はマイクロソフトが開発した拡張可能なコマンドラインインターフェース (CLI) シェルおよびスクリプト言語である。オブジェクト指向に基づいて設計されており、.NET Frameworkを基盤としている。

かつてはMicrosoft Shell(MSH、コードネーム Monad)と呼ばれていた。

Windows 7以降のオペレーティングシステム (OS) には標準で搭載されている。

参考:ウィキペディア
https://ja.wikipedia.org/wiki/Windows_PowerShell

とりあえず、ウィキペディアを参照してみました。
Windows7以降で、バッチを作成するのに適している言語。と、私は認識しています。
VBスクリプトとかで作成するバッチよりも、自由度高くできると思っているからです。

今回は何を作ったのか

今回紹介するのは、シャットダウン前に何らかのexeを実行し、
それが終わるまでシャットダウンを待機する。そんなプログラムです。

まぁ、細かな説明は置いておいて、さっさとモジュール紹介しますね笑

ソースコード

Set-StrictMode -version Latest
#.Net Frameworkのダイアログ関連オブジェクトの取り込み
Add-Type -AssemblyName System.Windows.Forms

#ダイアログに表示するメッセージ
$text = “Windowsの終了処理を開始します。`r`nよろしいですか?"
#ダイアログのタイトル
$caption = “操作確認"
#ダイアログのボタン形状
$buttonsType = “YesNo"
#ダイアログアイコンの種類
$iconType = “Question"

#ダイアログ出力
$result = [System.Windows.Froms.MessageBox]::Show($text, $caption, $buttonsType, $iconType)

#押下ボタンによる処理分岐
if($result -eq “Yes"){
#シャットダウン前の実行exe(今回はメモ帳の起動)
Start-Process -FilePath notepad.exe -Wait

#シャットダウン実行
Stop-Computer
}

ソースコードの説明

簡単に実行コマンドとメッセージボックスの説明をしたいと思います。

メッセージダイアログ

メッセージダイアログの表示は、

[System.Windows.Forms.MessageBox]::Show(出力メッセージ, ダイアログタイトル, ボタン種類, アイコン種類)

で行うことができます。引数違いでいくつかあるのですが、今回は省略します。

ボタン種類について

ダイアログのボタン種類には以下の種類が存在します。

YesNoCancel YesNoCancel
AbortRetryIgnore AbortRetryIgnore
YesNo YesNo
OKCancel OKCancel
RetryCancel RetryCancel
OK OK
アイコンの種類

ダイアログのアイコンの種類には以下の種類が存在します。

Quesion OK
Information Information
Warning Warning
Error
Error
シャットダウンコマンド

シャットダウンのトコマンドと類似コマンドについても紹介します。

シャットダウン

通常のシャットダウン

Stop-Computer

強制シャットダウン

Stop-Computer -Force

再起動

通常の再起動

Restart-Computer

強制再起動

Restart-Computer -Force

プロセスの起動コマンド
起動後にすぐ後続処理を実行

Start-Process -FilePath notepad.exe

notepad.exeのところを実行したいexeファイル名に変更する。基本的にexeファイルの絶対パスを設定する。

起動後、exeが終了するまで処理を待機

Start-Process -FilePath notepad.exe -Wait

その他

今回は使用していないけど、たぶんよく利用するコマンド類についても簡単にご紹介しておきます。

コンソールへテキスト出力

Write-Host “出力メッセージ"

指定した秒数待機

Start-Sleep -s 20

さいごに

とてもシンプルかつ簡単なソースです。
しかし、何かを実行する前に何かをしなければならないけど、忘れがち…
そういったときには、少し役に立つのではないかと思います。(思いたい)

今回は、シャットダウン前に特定のexeを実行するモジュールですが、
応用としては特定のexeを実行する際に起動しておかなければならないexeが存在する。
といった場合でも重宝すると思います。実行するプロセスは複数指定も可能ですし。

よかったら、今回紹介したモジュールを参考に何か作ってみてくださいね笑

では、本日はこの辺で….

IT技術PowerShell

Posted by 羽柴玲