PowerShell
PowerShell(パワーシェル)は、マイクロソフトが開発した拡張可能なコマンドラインインターフェイス (CLI) シェルおよびスクリプト言語である。オブジェクト指向に基づいて設計されており、.NET Framework (Windows PowerShell 5系以前) あるいは.NET Core (PowerShell Core 6系以降) を基盤としている。 かつてはMicrosoft Shell(MSH、コードネーム Monad[2])と呼ばれていた。 Windows 7以降のオペレーティングシステム (OS) には標準で搭載されている。 歴史マイクロソフトによるOSにはMS-DOSからWindowsに至るまで、どのバージョンにもコマンドラインシェルが付属した。それは、かつては マイクロソフトはコマンドラインツールの短所を補うものとして、1998年にWindows 98でWindows Script Host (WSH) を提供した。これは様々なスクリプト言語を実装するための新しいソフトウェアであった。しかしWSHはシェルに統合されていないという欠点があり、ドキュメントも非常に使いにくいものだった。またWSHの持つセキュリティ上の欠陥をつくコンピュータウイルスがいくつか出現したため、システム上の脆弱性とみなされたこともあり、広く普及するには至らなかった。 そして2003年、マイクロソフトはWindowsや自社製品のシステム管理・自動化を行うための新世代シェルとして、またスクリプトとして実行可能なプログラミング言語としてMonad(後の PowerShell)を発表した。 2015年9月現在、Windows PowerShellの正式な最新バージョンは5.0であり、Windows 10に標準搭載されている[5]。Windows 8.1に標準搭載されているバージョンは4.0、Windows 8に標準搭載されているバージョンは3.0、Windows 7に標準搭載されているバージョンは2.0となる[6]。 2016年8月には、PowerShellのオープンソース化、並びにLinuxとOS Xへの移植が発表された。これは同年6月にリリースされたオープンソースの.NET Coreに続くものとなった[7]。 変遷Windows PowerShellWindows PowerShell 1.02003年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がリリースされた。 マイクロソフトはこれからの主なGUIツールはPowerShell上に構築されると表明し、主な管理機能がスクリプト可能になるとした。例えば、Exchange Server 2007の管理ツールはPowerShellの上に構築されている。多くの日常的な場面でPowerShellは Windows PowerShell 2.02009年10月リリース。 Windows PowerShell 3.02012年9月リリース。動作には.NET Framework 4を必要とする。 Windows PowerShell 4.02013年10月リリース。動作には.NET Framework 4.5を必要とする。 Windows PowerShell 5.02015年12月リリース[注釈 1][8][9][10]。動作には.NET Framework 4.5を必要とする。 Windows PowerShell 5.12016年8月リリース。Windows 10 Anniversary Update及びWindows Server 2016の標準バージョン。 Windows PowerShell 5.1はDesktopとCoreの2つのエディションを提供する[注釈 2]。Desktop Editionは従来どおりのWindows PowerShellで、Core EditionはNano Serverで実行するために、.NET Core上に構築され、いくつかの機能が削減されている[12]。
「◎」標準搭載、「○」インストールして利用可能、「→」上位バージョン標準搭載、「×」利用不可 PowerShell CorePowerShell Core 6.02016年8月、オープンソース化、Linux/OS Xへの移植を発表[7]。 2018年1月、PowerShell Core 6.0リリース[13][11]。ランタイムとして.NET Frameworkに代わり.NET Core 2.0を使用する。これによりPowerShell Core6はWindows、macOS、Linuxで動作が可能になった[14]。 PowerShell Core 6.12018年9月、PowerShell Core 6.1リリース[15]。 Windows 10およびWindows Server 2019との互換性強化、サポートプラットフォームの強化[15]が図られている。.NET Core 2.1を使用する。 PowerShell Core 6.22019年3月、PowerShell Core 6.2リリース[16][17]。 PowerShell 7.02020年3月、PowerShell 7.0リリース[18][19]。.NET Core 3.1を使用する。 PowerShell 7.12020年11月、PowerShell 7.1リリース[20]。.NET 5.0を使用する。 基本的な概念PowerShellはオブジェクト指向言語であり[21]、基本的な機能をもつ様々なコンポーネントを組み合わせたタスクによって構成される。[注釈 3]コンポーネントは、コマンドレット (cmdlet) と呼ばれるプログラムであり、その実体は.NETのクラスである[22]。 コマンドレット間でのデータの受け渡しは、古典的なUNIX型アプローチ(テキスト入出力をパイプする)とは異なり、オブジェクト(構造化されたデータ)で行なわれる。コマンドラインから個別にアクセスされた場合、コマンドレットの出力は自動的にテキストに変換されるが、出力が他のコマンドレットに渡されるのであれば、そのコマンドレットの入力として最も適切な形式に変換され、渡される[23]。これにより、UNIX型システムで一般的なテキスト処理ユーティリティ(grepやawkなど)が不要となり、インタラクティブに、またはスクリプト環境(より複雑なプログラミング言語が必要)の中で、様々なコマンドレットを結合することができる。例えば、プロセスの一覧を出力する場合、それらは単なるテキストの一覧ではなく、プロセスの情報を表すオブジェクトの一覧である。従ってそれらのオブジェクトに対して、明示的に外部の構造やライブラリを使用することなく、直接的にメソッドを適用することができる。 特徴・機能Windows PowerShell/PowerShell Coreには次の機能が含まれる。
使用例「p」で始まるプロセスを全て停止する[41]。 PS> Get-Process p* | Stop-Process
1000 MB以上のメモリを占有するプロセスを検索し、停止する[42]。 PS> Get-Process | Where { $_.WS -gt 1000MB } | Stop-Process
ディレクトリ中に含まれる全ファイルの合計サイズを計算して出力する[43]。 PS> Get-Childitem | Measure-Object -property length -sum
文字列に含まれる小文字を大文字に変換した文字列を作る[44]。 PS> "hello, world!".ToUpper()
PS> "internal".Insert(5, "natio")
指定したRSSフィードをダウンロードし、最新の8エントリーのタイトルを表示する[46]。 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
脚注注釈
出典
参考文献
外部リンク
|
Portal di Ensiklopedia Dunia