PowerShell(パワーシェル)とは、Microsoft社が開発したシェル(スクリプト言語)です。拡張可能で高機能な運用管理機能を提供します。

オープンソースのPowerShellとは

PowerShell(パワーシェル)とは、Microsoft社が開発したシェル(スクリプト言語)です。拡張可能で高機能な運用管理機能を提供します。

目次

「PowerShell」基本情報
■概要
■基本説明
・Windows環境用「Windows PowerShell」
・オープンソース化された「PowerShell」
■動作環境
■経緯
・Windows用コマンドラインシェルの変遷

主な特徴
■対話型環境
■コマンドレット
・.NETクラス
・使用方法
■オブジェクト指向
・オブジェクトパイプライン
・プロバイダモデル(階層的データ構造アクセス機構)
■スクリプト
・本格的スクリプト言語
・C#構文風
・例外処理メカニズム
・主な機能
■セキュリティ
・実行ポリシー
・デジタル署名
■下位互換性

関連ツール
■PowerShellデバッガ
■テストツール「Pester」
■パッケージマネージャー「PowershellGet」
・「PowerShellGet」とは
・リポジトリ「PowerShell Gallery」

補足情報
■同様製品
■オフィシャルサイト
・オフィシャルサイト
・ライセンス情報
・ダウンロード

「PowerShell」基本情報

■概要

PowerShell(パワーシェル)とは、Microsoft社が開発したシェル(スクリプト言語)です。拡張可能で高機能な運用管理機能を提供します。

■基本説明

PowerShellは、タスク自動化および構成管理フレームワークであり、コマンドラインシェルとそれに関連するスクリプト言語で構成されています。

システム管理者やパワーユーザー向けに設計されており、システム管理でよく使われる処理を実行したり、スクリプト化して自動実行を行えます。「.NET Framework」を基盤として動作します。

Windows環境用「Windows PowerShell」

Windows環境では、コマンドプロンプトの進化版「Windows PowerShell」として、Windowsを管理するための新しいシェルとして開発されました。

コマンドプロンプトに関連するさまざまな問題を解決し、新しい機能を追加することによって、コマンドラインとスクリプト環境を改善するように設計されています。

Windows7以降には標準で搭載されており、Windowsサーバ群のデフォルトシェルになっています。

オープンソース化された「PowerShell」

Microsoftは、Windows用であった「Windows PowerShell」をオープンソース化したことにより、「Linux」や「macOS」でも動作するようになりました。

■動作環境

PowerShellはオープンソースプロジェクトであり、Windows、Linux、MacOSで利用できます。

■経緯

・2003年 初期版発表
・2006年 初版リリース
・2016年 オープンソース化

Windows用コマンドラインシェルの変遷

①コマンドプロンプト(cmd.exe)
コマンドプロンプトは、MS-DOSやWindowsに搭載されていたコマンドラインツールです。
限定的な機能しか利用できないため、管理機能自動化に対応しきれない問題がありました。

②Windows Script Host (WSH)
Microsoftは、1998年、コマンドプロンプトの短所を補うものとして「Windows Script Host(WSH)」を提供しました。
「シェルに統合されていない」「ドキュメント不足」「セキュリティ上の欠陥」「システム上の脆弱性になりうる」などの問題があり、広く普及することはありませんでした。

③Windows PowerShell
Microsoftは、2003年、「Windowsや自社製品のシステム管理/自動化を行うための新世代シェル」および「スクリプトとして実行可能なプログラミング言語」として「Monad」(後のPowerShell)を発表しました。

主な特徴

■対話型環境

PowerShellは、コマンドラインツールとCOMオブジェクトへのアクセスを提供する、インタラクティブでスクリプト化された対話型環境を提供します。

対話形式の入力コマンドからスクリプト作成やコマンド実行を行えます。

■コマンドレット

PowerShellでは、管理タスクは「コマンドレット」によって実行されます。

大量のコマンドレットが用意されており、各種設定など管理業務に必要な操作のほとんどすべてをカバーします。

.NETクラス

コマンドレットは特定の操作を実装する特殊な.NETクラスで、PowerShellランタイムは実行時にコマンドレットをインスタンス化して呼び出します。

これらのコマンドレットクラスは、任意の.NET APIを参照することができ、任意の.NET言語で実装することで、独自コマンドレットを開発してPowerShellに追加できます。

使用方法

コマンドレットは、使用方法/出力形式などが統一化されているため容易に習熟できます。

構文は「動詞→名詞→パラメータ名→パラメータ値」のように規定されています。

■オブジェクト指向

PowerShellは、オブジェクト指向に基づいて設計されています。

構造化データ(JSON/CSV/XMLなど)や、REST APIを処理するために最適化されたオブジェクトモデルを提供します。

オブジェクトパイプライン

PowerShellは「パイプライン」という概念を実装しています。これにより、あるコマンドレットの出力をオブジェクトとして別のコマンドレットの入力としてパイプすることができます。

パイプラインは、メソッドチェーンに似ているもので、関数型言語の考え方が取り入れられています。

コマンドレット間のデータ受け渡しは、古典的UNIX型アプローチである「テキスト入出力パイプ」ではなく、「.NET Frameworkの構造化.NETオブジェクト」を直接やり取りします。

プロパティ情報を保持したままのオブジェクトを次々と後続コマンドレットに渡していけるメリットがあります。

結果として、PowerShellは、他のシェルで経験を積んだユーザーにとって使い慣れたインターフェースで、新しく強力なコマンドラインパラダイムを提供します。

プロバイダモデル(階層的データ構造アクセス機構)

PowerShellでは、「プロバイダモデル」で階層的データ構造にアクセスします。

データアクセス
「ファイルシステム」「レジストリ」「デジタル署名」「環境変数」「エイリアス」「スクリプト変数」「関数」などのさまざまなデータ種類に対して、データストアに格納されているデータファイルのようにアクセスできます。

プロバイダ
「ファイルシステムブロバイダ」「レジストリブロバイダ」のように、データ種類ごとにプロバイダが用意されています。
プロバイダモデルは拡張可能で、独自プロバイダを作成して、PowerShellに組み込むことが可能です。

データアクセス手法の統一
以前のコマンドプロンプトのようなシェルでは、扱うデータごとに異なる操作が必要でしたが、PowerShellでは、プロバイダモデルにより、あらゆるデータ種類に対して、統一された手法でアクセスできるメリットがあります。

■スクリプト

本格的スクリプト言語

PowerShellは本格的スクリプト言語としての機能も備えています。

高度な文法を備えているため、コマンドレットを組み合わせて「一連の処理」や「複雑な処理」をスクリプトとして記述し、複雑で高度なスクリプトを作成できます。
RubyやPythonなどのモダンなスクリプト言語に近い感覚で処理を記述できます。

以前のコマンドプロンプトでは、コマンドを逐次実行する「バッチ」を利用していましたが、PowerShellではコマンドレットや内部コマンドを組み合わせたPowerShellスクリプトを使用できます。

PowerShellスクリプトにより「システム管理処理の自動化」をより容易に実現できます。
例えば、「Excel上のデータからActive Directoryのユーザーアカウントを自動的に作成する」などのような複雑な処理を比較的簡単に記述できます。

C#構文風

PowerShellスクリプトの構文は、.NET Frameworkをベースとしているため、プログラミング言語「C#」の構文と多くの類似点があります。

オブジェクトメンバに対してC#構文のような表記法を使用してアクセスします。

C#に精通しているユーザーにとっては、スムーズに導入しやすいメリットがあります。また、逆に、PowerShellを習得することで、C#のスタイルを理解しやすくなります。

例外処理メカニズム

PowerShellは.NETベースの例外処理メカニズムを提供します。

エラーの場合は、エラーに関する情報を含むオブジェクト(Exceptionオブジェクト)がスローされ、「try ... catch」コンストラクトによりキャッチされます。

例外をスローせずに、自動的に実行を再開するように構成することも可能です。

主な機能

PowerShellは、スクリプト言語として、各種制御構文や機能を使用できます。
・変数定義---変数スコープ(global、script、local)
・関数定義---匿名メソッド
・分岐構文---if-then-else、switch
・ループ構文---while、do、for、foreach
・例外処理+クロージャ
・ラムダ式
・ハッシュテーブル
・配列スライシング など

■セキュリティ

実行ポリシー

PowerShellスクリプト実行に対して、「実行ポリシー」設定により、以下の種類のセキュリティ制約を設定できます。
・Restricted
・AllSigned
・RemoteSigned
・Unrestricted

デジタル署名

スクリプトにデジタル署名を行えるため、「スクリプト作成者識別」や「スクリプト安全性保証」に使用できます。

■下位互換性

PowerShellは下位互換性を保持しているため、「バッチファイル」や「WSH(Windows Script Host)」などの既存資産をそのまま利用できます。

WSHから呼び出すCOMオブジェクトも実行できます。

関連ツール

PowerShellには、さまざまなツールが用意されています。

■PowerShellデバッガ

デバッガは、PowerShellスクリプトのバグを発見して問題を解決するために役立ちます。

「PowerShellデバッガコマンドレット」を使用して、PowerShellコマンドラインセッション内で直接デバッグを実行できます。

また、Visual Studio CodeのようなGUIツールを使ってPowerShellコードをデバッグできます。

→GitHub →PowerShell / docs / learning-powershell /debugging-from-commandline.md

■テストツール「Pester」

Pesterは、PowerShellのためのテストフレームワークで、以下の機能を提供します。
・テストランナー
・アサーション
・モッキング
・コードカバレッジ
・継続的インテグレーションツール連携 など

→GitHub →pester/Pester

■パッケージマネージャー「PowershellGet」

「PowerShellGet」とは

PowerShellGetは、PowerShellのパッケージマネージャです。

ユーザーはPackageManagementコマンドレットを使用してモジュールやスクリプトなどのPowerShell成果物について検出/インストール/更新できます。

→GitHub →PowerShell / PowerShellGet

リポジトリ「PowerShell Gallery」

PowerShellギャラリーは、PowerShellコンテンツのリポジトリです。

さまざまなコマンドやリソースが登録されています。

→PowerShell Gallery

補足情報

■同様製品

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Bash」など。

■オフィシャルサイト

オフィシャルサイト

→Microsoft →PowerShell(PowerShell Documentation | Microsoft Docs)

ライセンス情報

PowerShellのライセンスは「MIT License」です。

詳細について、こちらを参照ください。
→GitHub →PowerShell/LICENSE.txt

ダウンロード

→GitHub →PowerShell/PowerShell

 

参考元サイト

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

PowerShell最新TOPICS

【OSS】オープンソースシェル「PowerShell」を書くための「Windows PowerShell ISE」の使い方(2017年01月11日 11:03)

オープンソースシェル「PowerShell」について、基本的な使い方や便利テクニックを紹介。 「Windows PowerShell ISE(Integrated Scripting Environment)」の使い方を解説。 【PowerShellとは】 http://www.ossnews.jp/oss_info/PowerShell 【テーマ】 ・利用環境を整える ・ピン...

PowerShell最新CLOSEUPコラム

無料資料プレゼント

機械学習導入にあたって理解したい4つのステップ

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



  • 勉強会
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter