何度も繰り返し行うWindowsの作業を、簡単に自動化したいと思ったことはありませんか?でもバッチファイルは作り方が難しそう、コマンドプロンプトは敷居が高くて使いにくいという方は、環境構築不要ですぐに使えるPowerShellで自動化に挑戦してみてはいかがでしょうか。

Windowsに標準搭載されているPowerShellがあれば、例えばRPAのようなWindows操作の自動化処理が可能になります。ここではPowerShell ISEとは何なのかから、起動して実行環境に触れてみるところまで解説します。

PowerShell ISEとは

PowerShellはオブジェクトベースのスクリプト言語で、Windows管理用のコマンドラインインターフェイスツールです。正式な最新バージョンは5.1で、Windows10には最初から標準で5.1が実装されています。
コマンドラインインターフェイス(CLI)とはすべての操作をキーボードで行う方法で、マウス操作を必要としません。ショートカットキーなどを活用した操作で効率化できるため、慣れてしまえばマウス操作よりも素早く作業ができます。

PowerShell ISEはPowerShell専用の総合開発環境であり、PowerShellスクリプトやモジュールを記述するための専用コードエディタや実行環境のほか、デバッグ環境などをまとめて統合したGUI環境です。
PowerShellスクリプトはpowershell.exe(PowerShellコンソール)でも実行できますが、複雑な動作をさせるにはISEが必要になります。

コマンドプロンプトとの違い


コマンドをすべて自分で打ち込む必要があるコマンドプロンプトに比べて、コマンドレットを使用して指示を送れるPowerShellは使いやすさの面ではコマンドプロンプトよりも容易と言えます。
またコマンドプロンプトには開発環境がありませんが、PowerShellにはPowerShell ISEがあり、より扱いやすくなっています。

一方で処理速度についてはPowerShellよりもコマンドプロンプトのほうが速く、大量の処理を行う場合はコマンドプロンプトのほうが良い時もあります。
なお、PowerShellはコマンドプロンプトで行う処理をすべてサポートしているため、コマンドプロンプトでできることはPowerShellでも可能です。

PowerShell の歴史

マイクロソフトは2006年に、それまでMonadというコードネームだったプログラミング言語の正式名称をPowerShell 1.0 に改めてリリースしました。リリース当時のOSはWindows XP SP2やVistaで、OSの標準搭載ではなかったため適宜インストールが必要でした。
バージョンアップを重ねる中で2018年にはクロスプラットフォームに対応し、オープンソース化したPowerShell6.0がリリースされ、従来のWinRmベースの実装に加えて、要望が多かったSSHをサポートするようになりました。

PowerShell ISEをダウンロード、触ってみる

では実際にPowerShellを触ってみましょう。

インストールは基本的に不要
実はPowerShell ISEはコマンドプロンプト同様に、Windowsの基本機能としてWindows7から標準インストールされるようになっています。そのため、インストールの作業は必要ありません。
しかし各OSのバージョンに対し当時の最新バージョンがインストールされているので、必要に応じてアップグレードを行う必要があります。

Windows 10の場合

Windowsアイコンをクリックしてスタートメニューを開き、「ISE」と入力すると検索画面にPowerShell ISEが表示されるので「開く」をクリックしてスタートします。

Windows 8.1、8.0の場合

スタート画面で「PowerShell ISE」と入力または、デスクトップのWindowsアイコンをクリックしてスタートメニューを開き「PowerShell ISE」と入力して「開く」をクリックしてスタートします。

Windows 7 SP1の場合

Windows アイコンをクリックして、検索ボックスに「PowerShell」と入力し、実行します。

バージョンが古い場合

2019年12月現在でのバージョンは6.2が最新です。グレードアップをする場合、下記URLから該当するバージョンのインストーラーをダウンロードし、インストールしてください。
PowerShellはWindows Management Frameworkに同梱されているため、インストーラーはWindows Management Frameworkのものになります。
Windows10はWindows Updateが有効化されていれば初回起動時のアップデートで最新のパッチが適用されると同時にバージョンアップが行われるため、アップグレードは不要です。

もしWindows Updateが行われていない場合、バージョンは5.0になっているので手動でアップグレードを行ってください。初期状態ではWindows7SP1およびWindows8はPS 3.0、Windows8.1はPS 4.0がインストールされています。
https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-windows-powershell?view=powershell-6

また、オープンソース化およびクロスプラットフォーム化したPowerShell 6以降を使う場合は、Windows PowerShellではなくPowerShell Coreをインストールする必要があります。

PowerShell ISEの画面説明

クリックして画像を拡大

 

メニューバー

ファイル操作や各種編集、デバッグ、オプション設定などのメニュー。新しいスクリプトを入力するタブの追加などもここで行います。

ツールバー

画面の分割や配置、RedoUndoなど、よく使用されるメニューがアイコン化されて登録されています。

スクリプトウィンドウ

スクリプトの作成や編集を行うメイン画面です。ここにスクリプトを打ち込んだり、作成したスクリプトにブレークポイントを設定して、デバッグを行います。

実行ウィンドウ

スクリプトペインで作成したスクリプトの実行結果や、コマンドペインで入力したコマンドの実行結果が表示されます。スクリプトの実行に問題がある場合もここに表示されます。
コマンドプロンプトと同じ動作をするので、このウィンドウにコマンドを直接入力して実行もできます。

コマンドウィンドウ

PowerShellで使用可能なコマンドの一覧が表示されます。
コマンドを選択すると、コマンド名、モジュールのほか、詳細なパラメーターの設定画面へ遷移するボタンを表示します。
下部の挿入をクリックすると現在のスクリプトウィンドウに挿入されます。

ステータスバー

現在の状況やカーソル位置などが表示されます。
左側にある倍率のスライダーを操作することで、フォントサイズの変更が可能です。

PowerShell ISEでできること

コマンドプロンプトはデバッグができないため、複雑な動作をするコードを作るには手間がかかります。一方PowerShellはデバッグして処理途中で止めながらスクリプトが作れるため、開発効率が大きく向上します。
Windows上で実行されるなんらかの自動化処理を作成するのであれば、PowerShell ISEは最適な言語といえます。

コマンドレット(Cmdlet)

コマンドレットはWindowsの操作をまとめた指示文です。
コマンドプロンプトよりも可読性が高く、文章を書くような感覚でコードを記述できるメリットがあります。どのような処理をしているコードなのか視認しながら記述できるため、初めてPowerShellに触れる人でも比較的簡単に開発ができます。

またPowerShellのコマンドレットを使用すると、Office365を操作することも容易です。例えば大量のスクリーンショットをEXCELのシートに自動で貼り付けたり、PowerPointのすべてのページを画像化するなど、手作業で行うには面倒な作業をすべて自動化することができます。
コマンドレットはコマンドプロンプトではできない複雑で高度な処理が可能なため、繰り返しになる業務を軽減するRPAのようなものを作成することが容易になっています。

コマンドプロンプトのコマンドも使える

コマンドプロンプトのコマンドも使用できるため、大量のデータを高速で処理する必要がある場合などコマンドレットと併用することができます。
可読性や記述の容易さではコマンドレットのほうが優位ですが、実際の処理速度はコマンドプロンプトのほうが優位であるため、状況に応じて使い分けができるのもPowerShellの利点と言えます。
また、以下のコマンドでコマンドプロンプトからPowerShellを呼び出すことができます。

powershell -Command “ls”

引数を指定することで、値を渡して処理を実行することも可能です。

set dir=path/to
powershell -Command “ls %dir%”

PowerShell ISE使い方

テキストエディタに似た感覚で直感的に使用できるエディタです。
まず新規作成で新しいスクリプトタブを作成しましょう。そしてスクリプトウィンドウにコードを記入し、処理を作成していきます。
今回は使用しているコンピュータの製造元および型番を検索し、表示してみることにします。スクリプトウィンドウに以下のコードを入力し、実行ボタンを押します。

Get-CimInstance -ClassName Win32_ComputerSystem

実行ウィンドウに、使用しているコンピュータの情報が表示されました。

クリックして画像を拡大

この端末は自作であるため、ModelとManufacturerにはOEMと表示されています。
また、メモリは48GBであることがわかります。

次に、インストールされているプリンターの一覧を表示してみましょう。

Get-WmiObject -Class Win32_Printer

実行ウィンドウにプリンター一覧が表示されました。

クリックして画像を拡大

このコードを元に、ネットワークプリンターをインストールしてみましょう。

(New-Object-ComObject WScript.Network).AddWindowsPrinterConnection(“\\Printserver01\Canon01”)

ネットワーク上のプリンターを指定して実行すると、コンピュータにネットワークプリンターが新しく追加されます。
複数台のプリンターを一度に登録しなければいけない時や、新しいネットワークプリンターを同時に複数のコンピュータにインストールする場合などに役立ちます。
このような自動化が簡単に行えるのがPowerShell ISEの特徴です。

下火傾向のPowerShellだが、まだまだ使用は続く!

Windows10で利用可能になったWindows Subsystem for Linux(Bash on Windows)の登場もあり、PowerShellは今後下火になるか可能性があります。
しかし、Windows上でコマンドプロンプトを含めて長らく使用されてきたため、既存のバッチファイルや自動化スクリプトのメンテナンスなどを考えると、まだまだ使用が続く言語であるのは間違いありません。

特に環境構築が不要な点や可読性の高さ、操作性の容易さから、プログラミング初心者には扱いやすく学びやすいため、自動化の最初の挑戦にはうってつけの言語といえます。下火になることが予想されていますがまだまだ1ツールとしての魅力は残っています。興味がある方はぜひ触ってみてはいかがでしょうか。