Windows PowerShell

提供: miniwiki
2018/8/19/ (日) 20:03時点におけるAdmin (トーク | 投稿記録)による版 (1版 をインポートしました)
移動先:案内検索


テンプレート:Infobox Windowsコンポーネント

PowerShell
パラダイム 命令型、パイプライン、オブジェクト指向関数型リフレクション
登場時期 2006年
設計者 Jeffrey Snover、Bruce Payette、James Truher、他
開発者 マイクロソフト
型付け 強い型付け、型推論動的型付け
影響を受けた言語 Tcl/Tk[1]KshPerlC#、CL、DCL、SQL
プラットフォーム Windows, macOS, Linux
テンプレートを表示

Windows PowerShellマイクロソフトが開発した拡張可能なコマンドラインインターフェース (CLI) シェルおよびスクリプト言語である。オブジェクト指向に基づいて設計されており、.NET Frameworkを基盤としている。

かつてはMicrosoft Shell(MSH、コードネーム Monad)と呼ばれていた。

Windows 7以降のオペレーティングシステム (OS) には標準で搭載されている。

歴史

マイクロソフトによるOSにはMS-DOSからWindowsに至るまで、どのバージョンにもコマンドラインツールが付属した。それは、かつてはCOMMAND.COMであり、Microsoft Windows NTベースの製品においてはcmd.exeであった。これらのツールはグラフィカルユーザインタフェース (GUI) で提供されるような管理機能の自動化や再利用に必ずしも長けているとは言えなかった。これはコマンドライン内の制限によるものであり、マイクロソフトが高品質なコマンドラインツールを提供しなかったためでもあった。

マイクロソフトはコマンドラインツールの短所を補うものとして、1998年にWindows 98Windows Script Host (WSH) を提供した。これは様々なスクリプト言語を実装するための新しいソフトウェアであった。しかしWSHはシェルに統合されていないという欠点があり、ドキュメントも非常に使いにくいものだった。またWSHの持つセキュリティ上の欠陥をつくコンピュータウイルスがいくつか出現したため、システム上の脆弱性とみなされたこともあり、広く普及するには至らなかった。

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

2015年9月現在、Windows PowerShellの正式な最新バージョンは5.0であり、Windows 10に標準搭載されている[2]Windows 8.1に標準搭載されているバージョンは4.0、Windows 8に標準搭載されているバージョンは3.0、Windows 7に標準搭載されているバージョンは2.0となる[3]

2016年8月には、PowerShellのオープンソース化、並びにLinuxOS Xへの移植が発表された。これは同年6月にリリースされたオープンソースの.NET Coreに続くものとなった。[4]

沿革・バージョン

年月日 出来事
2003年9月 コードネーム Monadが公開された。
2006年4月 正式名称がWindows PowerShellとなることが発表され、リリース候補 (RC) 1がリリースされた。
2006年9月 RC2がリリースされた。
2006年11月 Windows PowerShell 1.0がウェブ上でリリースされた (RTW)。動作には .NET Framework 2.0を必要とする。
2007年1月 PowerShell 1.0 for Vistaがリリースされた。
2009年10月 Windows PowerShell 2.0がリリースされた。
2012年9月 Windows PowerShell 3.0がリリースされた。動作には.NET Framework 4を必要とする。
2013年10月 Windows PowerShell 4.0がリリースされた。動作には.NET Framework 4.5を必要とする。
2015年12月 Windows PowerShell 5.0がリリースされた[5] [6] [7] [8]。動作には.NET Framework 4.5を必要とする。
2016年8月 オープンソース化、Linux/OS Xへの移植を発表。[4]

マイクロソフトはこれからの主なGUIツールはPowerShell上に構築されると表明し、主な管理機能がスクリプト可能になるとした。例えば、Exchange Server 2007の管理ツールはPowerShellの上に構築されている。多くの日常的な場面でPowerShellcmd.exeやWSHを置き換えるものとして利用できる。

PowerShellのバージョンと対応OS
項目 1.0 2.0 3.0 4.0 5.0
Windows Server 2003 ○SP1 ○SP2 × × ×
Windows Server 2003 R2 ○SP1 ○SP2 × × ×
Windows Server 2008 ○SP1 ○SP2 × ×
Windows Server 2008 R2 ○SP1 ○SP1 ○SP1
Windows Server 2012
Windows Server 2012 R2
Windows XP x64 × × × ×
Windows XP ○SP2 ○SP3 × × ×
Windows Vista ○SP1 × × ×
Windows 7 ○SP1 ○SP1 ○SP1
Windows 8 × ×
Windows 8.1
Windows 10

「◎」標準搭載、「○」インストールして利用可能、「→」上位バージョン標準搭載、「×」利用不可

基本的な概念

PowerShellは基本的な機能をもつ様々なコンポーネントを組み合わせたタスクによって構成される。[9]コンポーネントは、コマンドレット (cmdlet) と呼ばれるプログラムであり、その実体は.NETのクラスである。

コマンドレット間でのデータの受け渡しは、古典的なUNIX型アプローチ(テキスト入出力をパイプする)とは異なり、オブジェクト(構造化されたデータ)で行なわれる。コマンドラインから個別にアクセスされた場合、コマンドレットの出力は自動的にテキストに変換されるが、出力が他のコマンドレットに渡されるのであれば、そのコマンドレットの入力として最も適切な形式に変換され、渡される。これにより、UNIX型システムで一般的なテキスト処理ユーティリティ(grepawkなど)が不要となり、インタラクティブに、またはスクリプト環境(より複雑なプログラミング言語が必要)の中で、様々なコマンドレットを結合することができる。例えば、プロセスの一覧を出力する場合、それらは単なるテキストの一覧ではなく、プロセスの情報を表すオブジェクトの一覧である。従ってそれらのオブジェクトに対して、明示的に外部の構造やライブラリを使用することなく、直接的にメソッドを適用することができる。

機能

PowerShell 1.0には次の機能が含まれる。

  • スクリプト言語ハッシュテーブル正規表現によるswitch配列スライシング、匿名メソッドなどの機能。ループ構文 (forforeachwhile)、条件文 (ifswitch)、変数のスコープ (globalscriptlocal)、関数の定義などがサポートされる。
  • ユーザがエラー処理方法などといった共通の設定を指定するため、コマンドレットは一定のオプションを継承する。副作用のあるコマンドレットは-WhatIf-Confirmオプションをサポートする。-WhatIfは何が起こるかをユーザに通知するが、実際には何も行わない。-Confirmは何が起こるのかユーザに通知し、実行するかどうか確認を求める。
  • エラー処理を制御するオプションに「一時停止」機能がある。これは、ユーザが新しいコマンドシェルに入ることで問題を分析し、もとのコマンドに復帰できるようにするというものである。こうした状況で表示されるプロンプトをユーザが定義することもできる。
  • 拡張可能な「プロバイダ」モデルにより、ファイルシステムなどの階層的データ構造の処理をすることができる。例えば、PowerShellにはシステムのレジストリにアクセスするレジストリプロバイダが存在する。これを用いれば、例えばシェルプロンプトで次のようなコマンドを打つことによってレジストリの内容を表示することができる。
dir HKLM:SOFTWARE\Microsoft
PowerShell には認証ストア、環境変数、シェル機能とエイリアスなどのプロバイダが存在する。プロバイダモデルはコマンドレットと同様に拡張可能であり、第三者が独自のプロバイダを作成してPowerShellに組み込むことができる。
  • 「実行ポリシー (execution policies)」という概念により、PowerShellによるスクリプトの実行に対して大まかなセキュリティ上の制約を課すことができる。実行ポリシーはPowerShellが設定ファイルを読み込み、スクリプトを実行するための制約を定義する。RestrictedAllSignedRemoteSignedUnrestrictedという四つの実行ポリシーが存在する。
  • スクリプト作成者の識別や、スクリプトの安全性の保証のため、デジタル署名によってスクリプトに署名することができる。
  • 通常、コマンドラインオプションは省略せずに完全な英単語を用いるが、曖昧でない範囲で文字数を小さくすることができる。例えば、-show-detailed-informationオプションは他に「s」で始まるオプションがなければ-sと指定することができる。
  • ユーザ定義のタブ補完機能が利用できる。Windowscmd.exeはファイル名やディレクトリ名しか補完できなかった。
  • コマンドの出力を変数に代入することができる。この変数はオブジェクトやオブジェクトの配列であり、後に任意の方法で処理することができる。

使用例

  • 「p」で始まるプロセスを全て停止する。
PS> Get-Process p* | Stop-Process
  • 1000MB以上のメモリを占有するプロセスを検索し、停止する。
PS> Get-Process | Where { $_.WS -gt 1000MB } | Stop-Process
  • ディレクトリ中に含まれる全ファイルの合計サイズを計算して出力する。
PS> Get-Childitem | Measure-Object -property length -sum
  • 文字列に含まれる小文字を大文字に変換した文字列を作る。
PS> "hello, world!".ToUpper()
  • "internal"という文字列の5文字目の直後に"natio"という文字列を挿入し、結果として"international"を得る。
PS> "internal".Insert(5, "natio")
  • 指定したRSSフィードをダウンロードし、最新の8エントリーのタイトルを表示する。
PS> $rssUrl = "http://blogs.msdn.com/powershell/rss.aspx"
PS> $blog = [xml](New-Object System.Net.WebClient).DownloadString($rssUrl)
PS> $blog.rss.channel.item | Select title -first 8
  • 変数 $UserProfile環境変数 UserProfile の値を代入する。
PS> $UserProfile = $env:UserProfile

脚注

  1. Snover, Jeffrey (2008年5月25日). “PowerShell and WPF: WTF”. . 2010閲覧.
  2. Cool Stuff about PowerShell 5 in Windows 10 - Hey, Scripting Guy! Blog - Site Home - TechNet Blogs
  3. Windows PowerShell System Requirements
  4. 4.0 4.1 Microsoft、「PowerShell」をオープンソース化。LinuxやOS Xにも対応”. OSDN (2016年8月19日). . 2016閲覧.
  5. Windows PowerShell 5.0はWindows Management Framework (WMF) 5.0に含まれる。2015年7月にリリースされたWindows 10に標準で含まれていたPowerShell 5.0/WMF 5.0に存在していた不具合が修正され、さらに以前のバージョンのOSにも対応したRTM版となっている。なおWMF 5.0のインストーラーには不具合があったため、2015年12月23日にいったん同社のダウンロードセンターから取り除かれ、2016年1月12日に再公開されている。
  6. Windows Management Framework (WMF) 5.0 RTM is now available - Windows PowerShell Blog - Site Home - MSDN Blogs
  7. Windows Management Framework (WMF) 5.0 currently removed from Download Center - Windows PowerShell Blog - Site Home - MSDN Blogs
  8. Download Windows Management Framework 5.0 from Official Microsoft Download Center
  9. これは、PowerShellのコードネームであるMonadが、ゴットフリート・ライプニッツ単子論: monadology)、すなわち宇宙は予定調和によって調和されたモナドと呼ばれる基本的な元素から構成される、という哲学に由来することにも現れている。

外部リンク


テンプレート:Windows Components テンプレート:.NET テンプレート:Windowsコマンド