GeezerVison is showing ja.wikipedia.org — PowerShell - Wikipedia
変遷
Windows PowerShell
Windows PowerShell 1.0
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がリリースされた。
マイクロソフトはこれからの主なGUIツールはPowerShell上に構築されると表明し、主な管理機能がスクリプト可能になるとした。例えば、Exchange Server 2007の管理ツールはPowerShellの上に構築されている。多くの日常的な場面でPowerShellはcmd.exeやWSHを置き換えるものとして利用できる。
Windows PowerShell 2.0
2009年10月リリース。
Windows PowerShell 3.0
2012年9月リリース。動作には.NET Framework 4を必要とする。
Windows PowerShell 4.0
2013年10月リリース。動作には.NET Framework 4.5を必要とする。
Windows PowerShell 5.0
2015年12月リリース[注釈 1][7][8][9]。動作には.NET Framework 4.5を必要とする。
Windows PowerShell 5.1
2016年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上に構築され、いくつかの機能が削減されている[11]。
Windows 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 | ○SP1 | ○SP2 | × | × |
| Windows Server 2008 R2 | → | ◎ | ○SP1 | ○SP1 | ○SP1 |
| Windows Server 2012 | → | → | ◎ | ○ | ○ |
| Windows Server 2012 R2 | → | → | → | ◎ | ○ |
| Windows XP x64 | ○SP1 | ○SP2 | × | × | × |
| Windows XP | ○SP2 | ○SP3 | × | × | × |
| Windows Vista | ○ | ○SP1 | × | × | × |
| Windows 7 | → | ◎ | ○SP1 | ○SP1 | ○SP1 |
| Windows 8 | → | → | ◎ | × | × |
| Windows 8.1 | → | → | → | ◎ | ○ |
| Windows 10 | → | → | → | → | ◎ |
| Windows 11 | → | → | → | → | ◎ |
「◎」標準搭載、「○」インストールして利用可能、「→」上位バージョン標準搭載、「×」利用不可
PowerShell Core
PowerShell Core 6.1
2018年9月、PowerShell Core 6.1リリース[14]。
Windows 10およびWindows Server 2019との互換性強化、サポートプラットフォームの強化[14]が図られている。.NET Core 2.1を使用する。
PowerShell Core 6.2
2019年3月、PowerShell Core 6.2リリース[15][16]。
PowerShell 7.0
2020年3月、PowerShell 7.0リリース[17][18]。.NET Core 3.1を使用する。
PowerShell 7.1
2020年11月、PowerShell 7.1リリース[19]。.NET 5.0を使用する。
PowerShell 7.2
2021年11月、PowerShell 7.2リリース[20]。.NET 6.0を使用する。
PowerShell 7.3
2022年11月、PowerShell 7.3リリース[21]。.NET 7.0を使用する。
PowerShell 7.4
2023年11月、PowerShell 7.4リリース[22]。.NET 8.0を使用する。
PowerShell 7.5
2025年1月、PowerShell 7.5リリース[23][24]。.NET 9.0を使用する。
基本的な概念
PowerShellはオブジェクト指向言語であり[25]、基本的な機能をもつ様々なコンポーネントを組み合わせたタスクによって構成される。[注釈 3]コンポーネントは、コマンドレット (cmdlet) と呼ばれるプログラムであり、その実体は.NETのクラスである[27]。
コマンドレット間でのデータの受け渡しは、古典的なUNIX型アプローチ(テキスト入出力をパイプする)とは異なり、オブジェクト(構造化されたデータ)で行なわれる。コマンドラインから個別にアクセスされた場合、コマンドレットの出力は自動的にテキストに変換されるが、出力が他のコマンドレットに渡されるのであれば、そのコマンドレットの入力として最も適切な形式に変換され、渡される[28]。これにより、UNIX型システムで一般的なテキスト処理ユーティリティ(grepやawkなど)が不要となり、インタラクティブに、またはスクリプト環境(より複雑なプログラミング言語が必要)の中で、様々なコマンドレットを結合することができる。例えば、プロセスの一覧を出力する場合、それらは単なるテキストの一覧ではなく、プロセスの情報を表すオブジェクトの一覧である。従ってそれらのオブジェクトに対して、明示的に外部の構造やライブラリを使用することなく、直接的にメソッドを適用することができる。
特徴・機能
Windows PowerShell/PowerShell Coreには次の機能が含まれる。
- オブジェクト指向言語である[29]
- パイプを使える
- オープンソースである (PowerShell Core)[30]
- 既定の文字コードは、Windows PowerShellはShift-JIS (日本語環境の場合)、PowerShell CoreはUTF-8である[31]
- 実行ファイル名は、Windows PowerShell の場合
powershell.exe、PowerShell Core の場合 pwsh.exe である[32][33]。
- スクリプト言語。ハッシュテーブル、正規表現による
switch文、配列のスライシング、匿名メソッドなどの機能。ループ構文 (for、foreach、while)、条件文 (if、switch)、変数のスコープ (global、script、local)、関数の定義などがサポートされる[34]。
- ユーザがエラー処理方法などといった共通の設定を指定するため、コマンドレットは一定のオプションを継承する。副作用のあるコマンドレットは
-WhatIf、-Confirmオプションをサポートする。-WhatIfは何が起こるかをユーザに通知するが、実際には何も行わない[35]。-Confirmは何が起こるのかユーザに通知し、実行するかどうか確認を求める[36]。
- エラー処理を制御するオプションに「一時停止」機能がある。これは、ユーザが新しいコマンドシェルに入ることで問題を分析し、もとのコマンドに復帰できるようにするというものである。こうした状況で表示されるプロンプトをユーザが定義することもできる[37]。
- 拡張可能な「プロバイダ」モデルにより、ファイルシステムなどの階層的データ構造の処理をすることができる。例えば、PowerShellにはシステムのレジストリにアクセスするレジストリプロバイダが存在する。これを用いれば、例えばシェルプロンプトで次のようなコマンドを打つことによってレジストリの内容を表示することができる[38]。
dir HKLM:SOFTWARE\Microsoft PowerShell には認証ストア、環境変数、シェル機能とエイリアスなどのプロバイダが存在する[39]。プロバイダモデルはコマンドレットと同様に拡張可能であり、第三者が独自のプロバイダを作成してPowerShellに組み込むことができる。
- 「実行ポリシー (execution policies)」という概念により、PowerShellによるスクリプトの実行に対して大まかなセキュリティ上の制約を課すことができる。実行ポリシーはPowerShellが設定ファイルを読み込み、スクリプトを実行するための制約を定義する。Restricted、AllSigned、RemoteSigned、Unrestrictedという四つの実行ポリシーが存在する[40]。
- スクリプト作成者の識別や、スクリプトの安全性の保証のため、デジタル署名によってスクリプトに署名することができる[41]。
- 通常、コマンドラインオプションは省略せずに完全な英単語を用いるが、曖昧でない範囲で文字数を小さくすることができる[42]。例えば、
-show-detailed-informationオプションは他に「s」で始まるオプションがなければ-sと指定することができる。
- ユーザ定義のタブ補完機能が利用できる[43]。Windowsの
cmd.exeはファイル名やディレクトリ名しか補完できなかった。
- コマンドの出力を変数に代入することができる。この変数はオブジェクトやオブジェクトの配列であり、後に任意の方法で処理することができる[44]。
- PowerShellの文が可変長個数のオブジェクトを返す場合、既定値では0個の場合は
$nullが、1個の場合はオブジェクトが、2個以上の場合はオブジェクトの配列を返す。明示的に配列を返したい場合は "@()"で文をくくる[45]。この考慮が洩れると次の例のように一見予想外の挙動をする。# Get-ChildItem が返戻する要素数が1のため、$bad には サイズ1024バイトのファイルを表すFileInfo型のオブジェクトが代入される。
$bad = Get-ChildItem "1個のサイズ1024バイトのファイルがあるディレクトリ"
# 一見、$bad.Lengthはディレクトリの要素数1が予想されるが、結果は1024が帰ってくる。$badは配列ではなくFileInfo型のオブジェクトで、Lengthプロパティが1024のためである。
$bad.Length
1024 # !?
# 明示的に配列を返したい場合は"@()"でくくる。
$good = @(Get-ChildItem "1個のサイズ1024バイトのファイルがあるディレクトリ" )
# $goodは正しく要素数1の配列のため、Lengthプロパティは1になる。
$good.Length
1
使用例
「p」で始まるプロセスを全て停止する[46]。
PS> Get-Process p* | Stop-Process
1000 MB以上のメモリを占有するプロセスを検索し、停止する[47]。
PS> Get-Process | Where { $_.WS -gt 1000MB } | Stop-Process
ディレクトリ中に含まれる全ファイルの合計サイズを計算して出力する[48]。
PS> Get-Childitem | Measure-Object -property length -sum
文字列に含まれる小文字を大文字に変換した文字列を作る[49]。
PS> "hello, world!".ToUpper()
"internal"という文字列の5文字目の直後に"natio"という文字列を挿入し、結果として"international"を得る[50]。
PS> "internal".Insert(5, "natio")
指定したRSSフィードをダウンロードし、最新の8エントリーのタイトルを表示する[51]。
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
脚注
注釈
- ↑ 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日に再公開されている。
- ↑ Core EditionはPowerShell Core 5.1とも呼ばれるが、後のPowerShell Coreのようにクロスプラットフォームではない[10]。
- ↑ これは、PowerShellのコードネームであるMonadが、ゴットフリート・ライプニッツの単子論(英: monadology)、すなわち宇宙は予定調和によって調和されたモナドと呼ばれる基本的な元素から構成される、という哲学に由来することにも現れている[26]。
出典
- ↑ 題名: Release 7.7.0, 出典URL: https://github.com/PowerShell/PowerShell/releases/tag/v7.7.0, 閲覧日: 2026年11月11日, 出版日: 2026年11月10日
- ↑ Payette 2007, pp. 4, 6.
- ↑ Payette 2007, p. 6.
- ↑ “Cool Stuff about PowerShell 5.0 in Windows 10”. Microsoft (2015年8月3日). 2018年9月28日閲覧。
- ↑ “Windows PowerShell のシステム要件”. Microsoft Docs (2017年6月5日). 2018年9月28日閲覧。
- 1 2 末岡洋子 (2016年8月19日). “Microsoft、「PowerShell」をオープンソース化。LinuxやOS Xにも対応”. OSDN Magazine. 2025年4月1日時点のオリジナルよりアーカイブ。2016年8月20日閲覧。
- ↑ PowerShell Team (2015年12月16日). “Windows Management Framework (WMF) 5.0 RTM is now available”. 2018年9月28日閲覧。
- ↑ PowerShell Team (2015年12月23日). “Windows Management Framework (WMF) 5.0 currently removed from Download Center”. 2018年9月28日閲覧。
- ↑ “Windows Management Framework 5.0 (Superceeded by WMF 5.1 RTM version: http://aka.ms/wmf5download)”. Microsoft. 2018年9月28日閲覧。
- 1 2 “PowerShell Core 6.0: Generally Available (GA) and Supported!” (英語). 2019年8月31日閲覧。
- ↑ “Nano Server の PowerShell”. 2019年8月31日閲覧。
- ↑ “MS、「PowerShell Core 6.0」を一般提供--「Linux」「macOS」もサポート”. ZDNet Japan (2018年1月12日). 2018年10月26日閲覧。
- ↑ “PowerShell Core 6.0 の新機能”. Microsoft (2018年8月6日). 2019年10月15日閲覧。
- 1 2 “Announcing PowerShell Core 6.1” (2018年9月13日). 2020年3月5日閲覧。
- ↑ “General Availability of PowerShell Core 6.2” (2019年3月28日). 2020年3月5日閲覧。
- ↑ “Microsoft、「PowerShell Core 6.2」を公開、次期リリースは「PowerShell 7」に”. 2019年9月7日閲覧。
- ↑ “Announcing PowerShell 7.0” (2020年3月4日). 2020年3月5日閲覧。
- ↑ “Microsoft、「PowerShell 7.0」を一般公開 ~三項演算子やnull結合演算子をサポート” (2020年3月5日). 2020年3月5日閲覧。
- ↑ “Announcing PowerShell 7.1” (2020年11月11日). 2020年11月12日閲覧。
- ↑ “General Availability of PowerShell 7.2” (2021年11月8日). 2025年9月4日閲覧。
- ↑ “PowerShell 7.3 General Availability” (2022年11月9日). 2025年9月4日閲覧。
- ↑ “PowerShell 7.4 General Availability” (2023年11月16日). 2025年9月4日閲覧。
- ↑ “PowerShell 7.5 GA is now available” (2025年2月12日). 2025年9月4日閲覧。
- ↑ “PowerShell Support Lifecycle”. 2025年9月4日閲覧。
- ↑ “PowerShell”. Microsoft (2018年8月6日). 2019年10月15日閲覧。
- ↑ Payette 2007, p. 4.
- ↑ Payette 2007, p. 33.
- ↑ Payette 2007, pp. 49–60.
- ↑ “PowerShell”. Microsoft (2019年2月28日). 2019年10月15日閲覧。
- ↑ “PowerShell”. Microsoft (2019年2月28日). 2019年10月15日閲覧。
- ↑ “VSCode と PowerShell でのファイルのエンコードの概要”. Microsoft (2019年2月28日). 2019年10月15日閲覧。
- ↑ “PowerShell exe について - PowerShell”. Microsoft Learn. 2023年5月10日閲覧。
- ↑ “Pwsh について - PowerShell”. Microsoft Learn. 2023年5月10日閲覧。
- ↑ Payette 2007.
- ↑ Holmes 2008, pp. 8, 9, 416.
- ↑ Holmes 2008, pp. 8, 9.
- ↑ Payette 2007, pp. 321–328.
- ↑ Holmes 2008, pp. 14–16.
- ↑ Holmes 2008, pp. 14–16, 67, 68.
- ↑ Payette 2007, pp. 510–514.
- ↑ Payette 2007, pp. 514–527.
- ↑ Holmes 2008, p. 6.
- ↑ Payette 2007, pp. 17–19.
- ↑ Payette 2007, p. 160-166.
- ↑ “PowerShell Gives You Wrongs”. 2020年2月9日閲覧。
- ↑ Payette 2007, p. 556.
- ↑ Payette 2007, pp. 556, 557.
- ↑ Payette 2007, pp. 557, 558.
- ↑ Payette 2007, p. 560.
- ↑ Payette 2007, pp. 560, 561.
- ↑ Payette 2007, p. 415.
参考文献
- Payette, Bruce 著、株式会社クイープ 訳『Windows PowerShell イン アクション』ソフトバンククリエイティブ、2007年。ISBN 978-4-7973-3736-5。
- Holmes, Lee『Windows PowerShell クックブック』監訳:マイクロソフト株式会社 ITプロ エバンジェリストチーム, 訳:菅野良二(初版)、オライリー・ジャパン、2008年。ISBN 978-4-87311-382-1。
外部リンク
マイクロソフトのAPIとフレームワーク |
|---|
| グラフィック | |
|---|
| オーディオ | |
|---|
| マルチメディア | |
|---|
| ウェブ | |
|---|
| データアクセス | |
|---|
| ネットワーク | |
|---|
| コミュニケーション | |
|---|
| 管理 | |
|---|
| コンポーネントモデル | |
|---|
| ライブラリ | |
|---|
| デバイスドライバ | |
|---|
| セキュリティ | |
|---|
| .NET | |
|---|
| ソフトウェアファクトリー | |
|---|
| IPC | |
|---|
| アクセシビリティ | |
|---|
テキストと多言語 サポート | |
|---|
| 人工知能 | |
|---|
|
|
|
|---|
|
| | ファイルシステム | |
|---|
| ファイル管理 | |
|---|
| ディスク管理 | |
|---|
| プロセス管理 | |
|---|
| レジストリ | |
|---|
| ユーザ環境 | |
|---|
| テキスト処理 | |
|---|
| スクリプト | |
|---|
| ネットワーク | |
|---|
| メンテナンス | |
|---|
| ブート管理 | |
|---|
| ソフトウェア開発 | |
|---|
| その他 | |
|---|
|
|
|