PowerShellとは
PowerShell(パワーシェル)とは、業務の自動化や構成管理に活用できる、クロスプラットフォームのシェルスクリプトです。
PowerShellを使用すれば、運用コストの削減や業務効率の向上が期待できます。PowerShellの活用例としては、連番のフォルダ作成・ログの監視・ファイル名の一括修正などが挙げられます。ここでは、PowerShellの概要やコマンドプロンプトとの違いについてわかりやすく紹介します。
【参考】:PowerShell ドキュメント - PowerShell | Microsoft Docs
PowerShellの概要
PowerShellとは、Microsoft社が開発したスクリプト言語であり、コマンドラインインタフェース(CUI) の1つです。CUIとは、コンピュータがユーザーに対して情報を提示したり、操作を受け付けたりすることであり、全てのやり取りを文字によって行う方式を指します。
例えば、「プログラムを起動・停止させる」「ファイルのパスを変更する」といったことが可能です。また、PowerShellはコマンドによりコンピュータの制御を行えるため、キーボードのみで操作することができ、マウスは必要ありません。
PowerShellとコマンドプロンプトの違い
WindowsOSには、コマンドプロンプトというCUIもあります。しかし近年では、コマンドプロンプトだけではなく、PowerShellも搭載されているのが一般的です。
PowerShellとコマンドプロンプトの共通点はどちらもCUIという点です。PowerShellは、コマンドプロンプトが抱えている課題を改善して開発されているのが特徴です。
現在でもコマンドプロンプトを使用してコンピュータの制御を行うことはできますが、特に理由がなければPowerShellの利用をおすすめします。理由として、今後はコマンドプロンプトに代わってPowerShellが普及していくと予想されるということが挙げられます。
PowerShellを使うべき理由とは
近年の普及状況を考えると、PowerShellは今後はさらに広い範囲で活用されていくことが想定されます。ここでは、PowerShellを使うべき理由をより詳しく解説します。
環境が備わっているのですぐに使える
PowerShellには、統合開発環境の「PowerShell ISE」が備わっています。PowerShell ISEは、PowerShell専用の統合開発環境であり、コードエディタ・実行環境・デバッグ環境など様々な開発環境が統合されています。
PowerShellのスクリプトは「powershell.exe(PowerShellコンソール)」で実行できますが、複雑な動作を実行するにはPowerShell ISEが必要です。
しかし、新しいWindowsOSにはPowerShell ISEが標準搭載されているため、新しいパソコンを買えば、環境を構築することなくすぐに使用できます。
【参考】:Windows PowerShell ISE の紹介 - PowerShell | Microsoft Docs
コマンドレットを使用できる
コマンドレットとは、PowerShellで使用できる軽量のコマンドのことです。コマンドレットは「動詞-名詞」という命名規則で作成されており、直感的にコマンドの内容を理解できるのが特徴です。
例えば、PowerShellで「Get-Command」というコマンドレットを実行すれば、コンピューターにインストールされている全てのコマンド一覧を表示させることができます。
また、これまでコマンドプロンプトで使用してきたコマンドも利用できるため、PowerShellはコマンドプロンプトの上位互換とも言えるでしょう。さらに、初めてコマンドによるOS操作に触れるという方は、PowerShellを使用することで、学習コストの削減が期待できます。
PowerShellでできること
PowerShellは多くのメリットがある便利なツールです。しかし、実際にPowerShellで何ができるのかを知りたい方も多いでしょう。そこで、ここではPowerShellでできることについてわかりやすく紹介します。
日々の業務やタスクの自動化
Windows環境において、システム管理や日常的な作業をスクリプトで自動化できます。例えば、「ディレクトリを作成する」「複数のファイル名を変更する」といった作業は、1つ1つ行うと時間がかかる上、間違いも起こりやすくなります。
しかし、PowerShellを活用して自動実行すれば、ミスを減らし効率を向上させることができます。また、タスクスケジューラと連携してバックアップやシステムチェックを定期的に実行するなど、さまざまな用途に利用可能です。
Microsoftのサービスの操作
PowerShellを使用すれば、「Microsoft 365」「Microsoft Exchange」などのMicrosoft社が提供しているクラウドサービスを操作できます。そのためPowerShellにより、メールボックスからユーザーデータを取得したり、ユーザーをグループ化したりすることが可能です。
また、フィルター処理による自動化や、一元管理している複数アカウントの一括設定変更もできるため、業務を大幅に効率化できるのが大きなメリットと言えます。
【参考】:Microsoft 365 の紹介 | Office アプリ、クラウド サービス、セキュリティの統合 【参考】:Microsoft Exchange | 企業に役立つ安全なビジネス メール サービス
パイプラインを使用した細かいコンピュータ制御
PowerShellには、複数の命令を組み合わせる「パイプライン」という機能が備わっています。この機能を使えば、先行のコマンド結果を次のコマンドに受け渡すことが可能です。PowerShellではパイプラインを縦棒「|」で記述します。
例えば「Get-ChildItem」と「Out-File」というコマンドレットを、パイプラインを使用し組み合わせることで、取得したファイル一覧情報の中から特定のテキストファイルを出力させられます。
なお、PowerShellではパイプラインを使用することで、コンピュータで行う操作のほとんどをコマンド実行できます。コマンドプロンプトと比較すると、PowerShellはより細かいコンピュータ制御が可能です。
【入門編】PowerShellの基本的な使い方
PowerShellでできることは様々であり、コマンドプロンプトと比較すると多くのメリットがあります。ここではPowerShell入門として、PowerShellの起動方法や基本文法をわかりやすく紹介します。
PowerShellの起動方法
PowerShellを起動するには、Windowsのスタートメニューから「Windows PowerShell」をクリックし、「Windows PowerShell」のアプリを右クリックして「管理者として実行する」を選択します。
他にも様々な方法で起動させることができますが、最終的にPowerShellが起動し、コマンドを入力できる状況であれば、起動は完了です。また、PowerShellをよく使用する場合には、タスクバーやスタートにピン留めしておくと便利です。
なお、勝手に起動するのを防ぎたい場合は、コントロールパネルの「プログラムと機能」から、「Windows の機能の有効かまたは無効化」を選択し、「Windows PowerShell 2.0」のチェックを外しましょう。
PowerShellの基本文法①(文字列出力)
プログラミング言語を学習し始めるときと同じように、まずはPowerShellで「Hello world!」を出力させてみましょう。PowerShellでコマンドラインに文字列を出力させるには、「Write-Host」というコマンドレットを使用します。
またPowerShellでは「#」を使用すれば、単一行をコメントアウトさせることが可能です。ここからは具体例を紹介します。
# 「Hello world!」という文字列を出力
Write-Host 'Hello world!'
このように、「Write-Host ' 文字列'」で任意の文字列を出力させることが可能です。複数行をコメントアウトさせたいときは、先頭に 「<#」、コメントの最後に 「#>」を使用します。
また、「Write-Host」というコマンドレットには文字色を変えるオプション「-ForegroundColor」や、背景色を変えるオプション「-BackgroundColor」を使用することが可能です。ここからは具体例を紹介します。
# 文字色を赤で文字列を出力
Write-Host 'Hello world!' -ForegroundColor red
# 文字色を黒、背景色を白で文字列を出力
Write-Host 'Hello world!' -ForegroundColor black -BackgroundColor white
このように、様々なオプションを使用して「Hello world!」という文字列を出力させることができます。他にも様々なオプションがあるため、気になる方はぜひインターネットを使用して記号等の意味を調べてください。
PowerShellの基本文法②(変数)
PowerShellでは「$変数名 = 値」という記述方法で、変数を宣言したり、変数に数値を代入したりできます。シェルによってはスペースの有無によりエラーが発生することもありますが、PowerShellではスペースの有無を気にする必要がありません。
そのため必要に応じて、スペースを活用できるのもPowerShellの魅力です。ここからは具体例を紹介します。
# スペースは実行結果に影響しない(どちらも変数「name」に文字列「Tanaka」を代入している)
$name = 'Tanaka'
$name='Tanaka'
設定した変数を展開したい場合には、下記のように記述します。実行結果は「Hello Tanaka!」となります。なおこの場合、文字列を囲む記号がシングルクォーテーションだと、変数展開はできないため注意が必要です。
# 変数展開
Write-Host "Hello ${name}!"
【応用編】PowerShellで複数のファイル名を一括変更する方法
複数あるファイルの名前を変更したい場合、1つずつ行っていたのでは時間がかかり、ミスも発生しやすくなってしまいます。そんなとき、PowerShellの基本コマンドとパイプラインを使用すれば、複数のファイル名を一括変更できます。
例えば、現在のディレクトリ内にある「png」という拡張子がついたファイルを、全て「jpg」という拡張子に一括変更したい場合は、以下のように記載します。
Get-ChildItem *.png | Rename-Item -NewName { $_.Name -replace '.png','.jpg' }
「Get-ChildItem」は、指定した条件に当てはまるファイル情報を取得するコマンドレットです。上記の例では、「png」ファイルを見つけた後、「Rename-Item」によって「png」から「jpg」にファイル名を一括変更しています。
PowerShellを学ぶのにおすすめの本
ここでは、PowerShellを勉強するのにおすすめの本を紹介します。PowerShellの学習本は数多くあり、初心者向けの本から応用編の本まで揃っています。これからPowerShellを業務で使いたい人や、PowerShellのスキルをもっと高めたい方は是非参考にしてください。
PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説
PowerShellを使ったことがない方でも理解しやすいよう、段階的に説明されています。インストール方法・サンプルコードの動かし方といった基礎から、モジュールを作って公開する方法・業務でPowerShellを活用するための知識といった応用まで学べます。
▪著者:吉崎生 ▪ページ数:624ページ ▪出版社:マイナビ出版 ▪発売日:2018/05/30
【参考】:PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説
コマンドプロンプト、PowerShellそしてWSLまで Windowsコマンド環境のすべて
PowerShellだけでなく、ほかのコマンドについても学びたい方におすすめの本です。本書では、PowerShellのほかにコマンドプロンプト・Windows Subsytem for Linux(通称WSL)について解説されています。
サンプルも豊富に紹介されており、メールを自動送信する・インターネットからファイルをダウンロードするといった実用的なものを学べます。
▪著者:五十嵐貴之 ▪ページ数:416ページ ▪出版社:ソシム ▪発売日:2021/04/09
【参考】:コマンドプロンプト、PowerShellそしてWSLまで Windowsコマンド環境のすべて(五十嵐貴之) | 書籍 本 | ソシム
Windows PowerShell実践システム管理ガイド 第3版
Windows環境のシステム管理者向けに書かれた本書は、PowerShellの使い方を基本から実践まで幅広く学べます。豊富な例で解説しているため、初心者の方でもわかりやすいでしょう。第3版ではPowerShell 5.0に対応し、Azure PowerShellについての章が新たに追加されています。
▪著者:横田 秀之、河野 憲義 ▪ページ数:404ページ ▪出版社:日経BP ▪発売日:2017/10/23
【参考】:Windows PowerShell実践システム管理ガイド 第3版|日経の本 日経BP
PowerShellを活用して業務を効率化しよう!
この記事では、PowerShellの概要・コマンドプロンプトとの違い・できること・使い方・基本文法・おすすめの書籍について解説しました。PowerShellはMicrosoft社が開発したスクリプト言語であり、コマンドラインインタフェース の1つです。
PowerShellでできることとして、コマンドレットの使用やMicrosoftサービスの操作などが挙げられます。PowerShellには統合開発環境があるのも特徴であり、アプリを起動するだけで簡単に使用できます。
入門編では文字列の出力や変数の定義について、また応用編ではファイル名の一括変更について紹介しましたが、 PowerShellでは他にもさまざまなことが実行可能です。興味がある方は、業務効率向上のためにもぜひPowerShellを勉強しましょう。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから