WindowsPowerShellとは、Windows7以降に標準搭載されているスクリプト言語です。
比較的新しい言語であり、従来のWindowsバッチ(cmd.exe)に慣れていると取っつきにくい面もあるのですが、後発である分高機能であり、実務でも使うことがあります。
今回は、WindowsPowerShellの簡単な説明を添えながらHelloWorldを3つ試してみます。
----
1つ目は、echoコマンドを用いたHelloWorldです。
WindowsPowerShellでは、従来のWindowsバッチやLinuxのBashシェルに近い感覚で処理を書くことができます。
他には、変数やif文やパイプといった、お馴染みの書き方が可能です。
ちなみに、少し変わった所では、例外処理をtry-catchやthrowといった書き方で記述することも可能です(こちらはjavaやC#に近いです)。
なお、WindowsPowerShellは、セキュリティ上の関係で、標準設定では直接実行することができません。
設定を変えずに実行するためには、一時的にポリシーを変更して実行する必要があります。
(今回の例では、Windowsバッチを介して実行します)
【サンプルコード】
・Hello.ps1
echo "Hello World!!"
・Hello.bat
PowerShell -ExecutionPolicy RemoteSigned .\Hello.ps1
pause
【実行結果】
C:\tmp>PowerShell -ExecutionPolicy RemoteSigned .\Hello.ps1
Hello World!!
C:\tmp>pause
続行するには何かキーを押してください . . .
----
2つ目は、コマンドレットを用いたHelloWorldです。
コマンドレットは、「動詞-名詞(-パラメータ名 パラメータ値)」という規則で命令を記述します。
今回は、"Write-Host"を使用します。
"Write"は文字列の書き込み、"Host"はコンソールを意味します。
(なお、WindowsPowerShellでは、コンソールへの出力とストリーム(パイプ)への出力は別々に制御します。ストリームに出力したい場合は、"Host"の代わりに"Output"を指定します。)
【サンプルコード】
・Hello.ps1
Write-Host "Hello World!!"
※Hello.batは変更無し
【実行結果】
C:\tmp>PowerShell -ExecutionPolicy RemoteSigned .\Hello.ps1
Hello World!!
C:\tmp>pause
続行するには何かキーを押してください . . .
----
3つ目は、.NetFrameworkの機能を使用したHelloWorldです。
WindowsPowerShellでは、.NetFrameworkの機能を使用することもできます。
例えば、"Hello World!!"と書かれたポップアップを表示することができます。
今回の例では、コマンドレットでWindowsFormを取り込み、MessageBoxクラスのShowメソッドを使用してポップアップを表示します。
記述方法はサンプルコードの通りですが、クラス名とメソッド名の記述方法はC++に似ています。
【サンプルコード】
・Hello.ps1
Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("Hello World!!", "ポップアップ")
※Hello.batは変更無し
【実行結果】