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
1 |
echo "Hello World!!" |
・Hello.bat
1 2 |
PowerShell -ExecutionPolicy RemoteSigned .\Hello.ps1 pause |
【実行結果】
1 2 3 4 5 |
C:\tmp>PowerShell -ExecutionPolicy RemoteSigned .\Hello.ps1 Hello World!! C:\tmp>pause 続行するには何かキーを押してください . . . |
2つ目は、コマンドレットを用いたHelloWorldです。
コマンドレットは、「動詞-名詞(-パラメータ名 パラメータ値)」という規則で命令を記述します。
今回は、”Write-Host”を使用します。
“Write”は文字列の書き込み、”Host”はコンソールを意味します。
(なお、WindowsPowerShellでは、コンソールへの出力とストリーム(パイプ)への出力は別々に制御します。ストリームに出力したい場合は、”Host”の代わりに”Output”を指定します。)
【サンプルコード】
・Hello.ps1
1 |
Write-Host "Hello World!!" |
※Hello.batは変更無し
【実行結果】
1 2 3 4 5 |
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
1 2 |
Add-Type -Assembly System.Windows.Forms [System.Windows.Forms.MessageBox]::Show("Hello World!!", "ポップアップ") |
※Hello.batは変更無し
【実行結果】
いかがでしたでしょうか。
Windows7の前の時代からIT業界に居た方にとっては、WindowsPowerShellはもしかしたら馴染みが薄いかもしれません。
また、標準の設定では直接実行できない、というのも取っつきにくいと思います。
しかし、コマンドレットや.NetFrameworkによって提供される機能は強力で、実務でもWindowsPowerShellのスクリプトを見かけるようになってきています。
なので、WindowsPowerShellにも慣れておいた方が無難ではないかと思います。
便利な機能があれば、今後紹介していこうと思います!
コメント