PowerShellって何だ? バッチから乗り換えた話


version 5.1

はじめに

 Windowsでコマンド操作するってなるとバッチファイルぽちぽち作るって人も一定数いるんじゃないでしょうか。私もその一人でした。でも、複雑なことをさせようと思ったら、バッチファイルだと機能が足りないんです。楽するためにバッチファイル作ってるのに、なんかやだねっ調べたくないねってなるんです。怠惰ですね。というわけでバッチファイルよりも高度な処理ができると噂のPowerShellについて調べてみました。

 いまさら感Maxだけど、お手柔らかに。

目次

windows7から標準装備されたっぽい。
IDEがあるってよ。
はじめてのPowerShell。
結局バッチも使った件。

Windows7から標準装備されたらしい

 このPowerShell(正式には、Windows PowerShell)は、Windows Server 2008 R2とWindows7から標準装備されたCUIツールだそう。なので、2009年頃から誰でも使えたみたいですね。もう10年前。。。そんなわけで、2019年4月現在version6.0まで出てるみたい。でも、一般的なWindows PCには現時点でver5がインストールされているらしく、ver5からver6に変わる時点で大幅な変更があったそうなので今回はver5.1について(Windows10標準装備)の話をしていこうと思います。

 PowerShellはコマンドプロンプトよりも強力でスクリプトを書くための言語ってこと。つまり私が今まで使ってきたバッチファイルよりも出来ることが多いよ!ってことらしい。やったね!

IDEがあるってよ

 Windows10にはPowerShell用のIDE(統合開発環境)が搭載されています。これはWindows PowerShell ISE(Integrated Scripting Environment)といい、PowerShellスクリプトを記述する専用のエディタ、実行環境、デバッグ環境が全部揃ったソフトウェアです。 

 ホームでISEと調べるとすぐ出てくるので使いやすいんじゃないかと思います。
 UIはこんな感じ。
 拡張子は.ps1を使います。バッチファイルは.batなので雰囲気はあまり変わらないのではないでしょうか。

はじめてのPowerShell

 とりあえず最初のプログラムとして、Hello Worldを出力するPowerShellを作ってみようと思います。作り方としては、さっきの統合開発環境や、バッチファイルのようにメモ帳でも作ることが出来ます。

helloworld.ps1
Write-Host "Hello world"

 こんな感じで簡単に作ることができます。PowerShellでは指示文のことをコマンドレットというであるとか、その種類だとかに関してはまた今度詳しく書けたら良いな。

 プログラムが出来たら実行となるところですが、ここで一つ問題が。このPowerShell、出来ることが多い分セキュリティ上危ういんですセキュリティが強化されています。勝手に予期しないPowerShellスクリプトが実行されたりしたら簡単にシステムの深い部分が実行されたりするので、最初はロックがかかっています。そのため、初めてPowerShellを実行するときにはWindowsのポリシーを変える必要があります。
 やり方としては、ホームでWindows PowerShellを検索、アイコンを右クリックして管理者として実行を選択します。

そして、

Set-ExecutionPolicy RemoteSigned

と入力してEnterします。そうすると、変更しますか?といった選択画面が出てくるのでyを入力すると変更されます。ここで変更するRemoteSignedというポリシーは、ローカルファイルと署名付きのPowerShellを実行可能とするポリシーになります。また、

Get-ExecutionPolicy

で現在のポリシーを確認できるので、実際に変更されたか確認してみると良いでしょう。

結局バッチも使った件

 そうこうしてようやくPowerShellが使えるようになったわけですが、このファイルダブルクリックで実行されないんですよね。バッチファイルに慣れている身としてはなかなかやりづらい。右クリックで実行も出来ますが、無精な身としてはなかなか面倒くさい。そんなわけで結局バッチファイルでPowerShellを実行できるようにしました。ファイル名はhello.batとして、

hello.bat
powershell .\helloworld.ps1
pause

と記述しました。これでダブルクリックでPowerShellが使えるようになりましたね。めでたしめでたし。

最後に

 PowerShellの使い方をだらだら書いてみました。これじゃあPowerShell使う意味ないとか、これだったらバッチファイルでも変わらないとかありますが、PowerShellにはlinuxのコマンドがそのまま使えたり、勉強するメリットは沢山ありそうです。今後少しづつ出来ることが増えてもっと楽できるようになれば良いなと思う次第。