「Windows PowerShell」の版間の差分

提供: miniwiki
移動先:案内検索
(1版 をインポートしました)
(内容を「{{テンプレート:20180815sk}}」で置換)
(タグ: Replaced)
 
1行目: 1行目:
<!-- アクセシビリティのため {{lang|en|~}} を削除しないでください。「[[Wikipedia:アクセシビリティ#外国語]]」を御覧ください。-->
+
{{テンプレート:20180815sk}}
<!-- → 英単語にlang|enタグを病的なまでにいちいち付けなければならないというシステムやルールのほうに問題があると思われる。詳細はノートを参照。 -->
 
{{出典の明記|date=2015年7月}}
 
{{Infobox Windowsコンポーネント
 
| name              = Windows PowerShell
 
| type              = コマンドライン シェル
 
| included_with      = [[Microsoft Windows 7|Windows 7]]<br />[[Microsoft Windows 8|Windows 8]]<br />[[Microsoft Windows 8.1|Windows 8.1]]<br />[[Microsoft Windows 10|Windows 10]]<br />[[Microsoft Windows Server 2008#Windows Server 2008 R2|Windows Server 2008 R2]]<br />[[Microsoft Windows Server 2012|Windows Server 2012]]<br />[[Microsoft Windows Server 2012 R2|Windows Server 2012 R2]]<br />Hyper-V Server 2008 R2
 
| also_available_for = [[Microsoft Windows XP|Windows XP]]<br />[[Microsoft Windows Vista|Windows Vista]]<br />[[Microsoft Windows Server 2003|Windows Server 2003]]<br />[[Microsoft Windows Server 2008|Windows Server 2008]]
 
| replaces          =
 
| replaced_by        =
 
| related_components = [[cmd.exe]]
 
}}
 
{{Infobox programming language
 
| name                  = {{lang|en|PowerShell}}
 
| logo                  =
 
| paradigm              = [[命令型プログラミング|命令型]]、パイプライン、[[オブジェクト指向]]、[[関数型]]、[[リフレクション (情報工学)|リフレクション]]
 
| year                  = 2006年
 
| designer              = Jeffrey Snover、Bruce Payette、James Truher、他
 
| developer              = [[マイクロソフト]]
 
| typing                = 強い型付け、[[型推論]]、[[動的型付け]]
 
| dialects              =
 
| influenced_by          = [[Tcl/Tk]]<ref>{{cite web
 
  | last      = {{lang|en|Snover}}
 
  | first      = {{lang|en|Jeffrey}}
 
  | title      = {{lang|en|PowerShell and WPF: WTF}}
 
  | date      = 2008-05-25
 
  | url        = http://blogs.msdn.com/b/powershell/archive/2008/05/25/powershell-and-wpf-wtf.aspx
 
  | accessdate = 2010-10-24
 
  }}</ref>、[[KornShell|{{lang|en|Ksh}}]]、{{lang|en|[[Perl]]}}、[[C Sharp|{{lang|en|C#}}]]、CL、DCL、[[SQL]]
 
| influenced            =
 
| platform              = {{lang|en|[[.NET Framework]]}}
 
| operating_system      = [[Microsoft Windows|Windows]], [[macOS]], [[Linux]]
 
}}
 
{{lang|en|'''Windows PowerShell'''}} は[[マイクロソフト]]が開発した拡張可能な[[キャラクタユーザインタフェース|コマンドラインインターフェース]] (CLI) [[シェル]]および[[スクリプト言語]]である。[[オブジェクト指向]]に基づいて設計されており、{{lang|en|[[.NET Framework]]}}を基盤としている。
 
 
 
かつては{{lang|en|'''Microsoft Shell'''}}(MSH、[[コードネーム]] {{lang|en|'''Monad'''}})と呼ばれていた。
 
 
 
{{lang|en|[[Microsoft Windows 7|Windows 7]]}}以降の[[オペレーティングシステム]] (OS) には標準で搭載されている。
 
 
 
== 歴史 ==
 
マイクロソフトによるOSには{{lang|en|[[MS-DOS]]}}から{{lang|en|[[Microsoft Windows|Windows]]}}に至るまで、どのバージョンにも[[コマンドラインインタプリタ|コマンドライン]]ツールが付属した。それは、かつては<code>[[COMMAND.COM]]</code>であり、{{lang|en|[[Microsoft Windows NT]]}}ベースの製品においては<code>[[cmd.exe]]</code>であった。これらのツールは[[グラフィカルユーザインタフェース]] (GUI) で提供されるような管理機能の自動化や再利用に必ずしも長けているとは言えなかった。これはコマンドライン内の制限によるものであり、マイクロソフトが高品質なコマンドラインツールを提供しなかったためでもあった。
 
 
 
マイクロソフトはコマンドラインツールの短所を補うものとして、1998年に{{lang|en|[[Microsoft Windows 98|Windows 98]]}}で{{lang|en|[[Windows Script Host]]}} (WSH) を提供した。これは様々なスクリプト言語を実装するための新しいソフトウェアであった。しかしWSHは[[シェル]]に統合されていないという欠点があり、ドキュメントも非常に使いにくいものだった。またWSHの持つセキュリティ上の欠陥をつく[[コンピュータウイルス]]がいくつか出現したため、システム上の脆弱性とみなされたこともあり、広く普及するには至らなかった。
 
 
 
そして2003年、マイクロソフトは{{lang|en|Windows}}や自社製品のシステム管理・自動化を行うための新世代シェルとして、また[[スクリプト]]として実行可能な[[プログラミング言語]]として{{lang|en|Monad}}(後の {{lang|en|PowerShell}})を発表した。
 
 
 
2015年9月現在、{{lang|en|Windows PowerShell}}の正式な最新バージョンは5.0であり、{{lang|en|[[Microsoft Windows 10|Windows 10]]}}に標準搭載されている<ref>[http://blogs.technet.com/b/heyscriptingguy/archive/2015/08/03/cool-stuff-about-powershell-5-0-in-windows-10.aspx {{lang|en|Cool Stuff about PowerShell 5 in Windows 10 - Hey, Scripting Guy! Blog - Site Home - TechNet Blogs}}]</ref>。[[Microsoft Windows 8#Windows 8.1|{{lang|en|Windows}} 8.1]]に標準搭載されているバージョンは4.0、{{lang|en|[[Microsoft Windows 8|Windows 8]]}}に標準搭載されているバージョンは3.0、{{lang|en|Windows 7}}に標準搭載されているバージョンは2.0となる<ref>[https://technet.microsoft.com/ja-jp/library/Hh847769.aspx {{lang|en|Windows PowerShell System Requirements}}]</ref>。
 
 
 
[[2016年]]8月には、PowerShellの[[オープンソース]]化、並びに[[Linux]]と[[macOS|OS X]]への[[移植 (ソフトウェア)|移植]]が発表された。これは同年6月にリリースされたオープンソースの[[.NET Framework|.NET Core]]に続くものとなった。<ref name="osdn20160819">{{Cite web|url=https://osdn.jp/magazine/16/08/19/160000|title=Microsoft、「PowerShell」をオープンソース化。LinuxやOS Xにも対応|publisher=[[OSDN]]|date=2016-08-19|accessdate=2016-08-20}}</ref>
 
 
 
==沿革・バージョン==
 
{|class=wikitable
 
!年月日!!出来事
 
|-
 
|2003年9月||コードネーム {{lang|en|Monad}}が公開された。
 
|-
 
|2006年4月||正式名称が{{lang|en|Windows PowerShell}}となることが発表され、リリース候補 (RC) 1がリリースされた。
 
|-
 
|2006年9月||RC2がリリースされた。
 
|-
 
|2006年11月||{{lang|en|Windows PowerShell}} 1.0がウェブ上でリリースされた (RTW)。動作には {{lang|en|.NET Framework}} 2.0を必要とする。
 
|-
 
|2007年1月||{{lang|en|PowerShell 1.0 for Vista}}がリリースされた。
 
|-
 
|2009年10月||{{lang|en|Windows PowerShell}} 2.0がリリースされた。
 
|-
 
|2012年9月||{{lang|en|Windows PowerShell}} 3.0がリリースされた。動作には{{lang|en|.NET Framework}} 4を必要とする。
 
|-
 
|2013年10月||{{lang|en|Windows PowerShell}} 4.0がリリースされた。動作には{{lang|en|.NET Framework}} 4.5を必要とする。
 
|-
 
|2015年12月||{{lang|en|Windows PowerShell}} 5.0がリリースされた<ref>{{lang|en|Windows PowerShell}} 5.0は{{lang|en|Windows Management Framework}} (WMF) 5.0に含まれる。2015年7月にリリースされた{{lang|en|Windows}} 10に標準で含まれていた{{lang|en|PowerShell}} 5.0/WMF 5.0に存在していた不具合が修正され、さらに以前のバージョンのOSにも対応したRTM版となっている。なおWMF 5.0のインストーラーには不具合があったため、2015年12月23日にいったん同社のダウンロードセンターから取り除かれ、2016年1月12日に再公開されている。</ref> <ref>[http://blogs.msdn.com/b/powershell/archive/2015/12/16/windows-management-framework-wmf-5-0-rtm-is-now-available.aspx {{lang|en|Windows Management Framework (WMF) 5.0 RTM is now available - Windows PowerShell Blog - Site Home - MSDN Blogs}}]</ref> <ref>[http://blogs.msdn.com/b/powershell/archive/2015/12/23/windows-management-framework-wmf-5-0-currently-removed-from-download-center.aspx {{lang|en|Windows Management Framework (WMF) 5.0 currently removed from Download Center - Windows PowerShell Blog - Site Home - MSDN Blogs}}]</ref> <ref>[https://www.microsoft.com/en-us/download/details.aspx?id=50395 {{lang|en|Download Windows Management Framework 5.0 from Official Microsoft Download Center}}]</ref>。動作には{{lang|en|.NET Framework}} 4.5を必要とする。
 
|-
 
|2016年8月||オープンソース化、Linux/OS Xへの移植を発表。<ref name="osdn20160819" />
 
|}
 
 
 
マイクロソフトはこれからの主なGUIツールは{{lang|en|PowerShell}}上に構築されると表明し、主な管理機能がスクリプト可能になるとした。例えば、{{lang|en|Exchange Server 2007}}の管理ツールは{{lang|en|PowerShell}}の上に構築されている。多くの日常的な場面で{{lang|en|PowerShell}}は<code>cmd.exe</code>やWSHを置き換えるものとして利用できる。
 
{|class=wikitable
 
|+{{lang|en|PowerShell}}のバージョンと対応OS
 
!項目!!1.0!!2.0!!3.0!!4.0!!5.0
 
|-
 
|{{lang|en|Windows Server}} 2003||○SP1||○SP2||×||×||×
 
|-
 
|{{lang|en|Windows Server}} 2003 R2||○SP1||○SP2||×||×||×
 
|-
 
|{{lang|en|Windows Server}} 2008||→||○SP1||○SP2||×||×
 
|-
 
|{{lang|en|Windows Server}} 2008 R2||→||◎||○SP1||○SP1||○SP1
 
|-
 
|{{lang|en|Windows Server}} 2012||→||→||◎||○||○
 
|-
 
|{{lang|en|Windows Server}} 2012 R2||→||→||→||◎||○
 
|-
 
|{{lang|en|Windows XP}} x64||○||×||×||×||×
 
|-
 
|{{lang|en|Windows XP}}||○SP2||○SP3||×||×||×
 
|-
 
|{{lang|en|Windows Vista}}||○||○SP1||×||×||×
 
|-
 
|{{lang|en|Windows 7}}||→||◎||○SP1||○SP1||○SP1
 
|-
 
|{{lang|en|Windows 8}}||→||→||◎||×||×
 
|-
 
|{{lang|en|Windows 8.1}}||→||→||→||◎||○
 
|-
 
|{{lang|en|Windows 10}}||→||→||→||→||◎
 
|}
 
「◎」標準搭載、「○」インストールして利用可能、「→」上位バージョン標準搭載、「×」利用不可
 
 
 
== 基本的な概念 ==
 
{{lang|en|PowerShell}}は基本的な機能をもつ様々なコンポーネントを組み合わせたタスクによって構成される。<ref>これは、{{lang|en|PowerShell}}のコードネームである{{lang|en|Monad}}が、[[ゴットフリート・ライプニッツ]]の[[単子論]]({{lang-en-short|monadology}})、すなわち宇宙は予定調和によって調和されたモナドと呼ばれる基本的な元素から構成される、という哲学に由来することにも現れている。</ref>コンポーネントは、'''コマンドレット''' ({{lang|en|cmdlet}}) と呼ばれるプログラムであり、その実体は{{lang|en|.NET}}のクラスである。
 
 
 
コマンドレット間でのデータの受け渡しは、古典的な{{lang|en|UNIX}}型アプローチ(テキスト入出力を[[パイプ (コンピュータ)|パイプ]]する)とは異なり、[[オブジェクト]](構造化されたデータ)で行なわれる。コマンドラインから個別にアクセスされた場合、コマンドレットの出力は自動的にテキストに変換されるが、出力が他のコマンドレットに渡されるのであれば、そのコマンドレットの入力として最も適切な形式に変換され、渡される。これにより、{{lang|en|UNIX}}型システムで一般的なテキスト処理ユーティリティ({{lang|en|[[grep]]}}や{{lang|en|[[awk]]}}など)が不要となり、インタラクティブに、またはスクリプト環境(より複雑なプログラミング言語が必要)の中で、様々なコマンドレットを結合することができる。例えば、[[プロセス]]の一覧を出力する場合、それらは単なるテキストの一覧ではなく、プロセスの情報を表すオブジェクトの一覧である。従ってそれらのオブジェクトに対して、明示的に外部の構造やライブラリを使用することなく、直接的にメソッドを適用することができる。
 
 
 
==機能==
 
{{lang|en|PowerShell 1.0}}には次の機能が含まれる。
 
*[[スクリプト言語]]。[[ハッシュテーブル]]、[[正規表現]]による[[switch文|<code>switch</code>文]]、[[配列]]の[[スライシング]]、匿名メソッドなどの機能。[[ループ]]構文 (<code>for</code>、<code>foreach</code>、<code>while</code>)、条件文 (<code>if</code>、<code>switch</code>)、変数の[[スコープ]] (<code>global</code>、<code>script</code>、<code>local</code>)、関数の定義などがサポートされる。
 
*ユーザがエラー処理方法などといった共通の設定を指定するため、コマンドレットは一定のオプションを継承する。副作用のあるコマンドレットは<code>-WhatIf</code>、<code>-Confirm</code>オプションをサポートする。<code>-WhatIf</code>は何が起こるかをユーザに通知するが、実際には何も行わない。<code>-Confirm</code>は何が起こるのかユーザに通知し、実行するかどうか確認を求める。
 
*エラー処理を制御するオプションに「一時停止」機能がある。これは、ユーザが新しいコマンドシェルに入ることで問題を分析し、もとのコマンドに復帰できるようにするというものである。こうした状況で表示されるプロンプトをユーザが定義することもできる。
 
*拡張可能な「プロバイダ」モデルにより、ファイルシステムなどの階層的データ構造の処理をすることができる。例えば、{{lang|en|PowerShell}}にはシステムの[[レジストリ]]にアクセスするレジストリプロバイダが存在する。これを用いれば、例えばシェルプロンプトで次のようなコマンドを打つことによってレジストリの内容を表示することができる。
 
<code>dir HKLM:SOFTWARE\Microsoft</code>
 
:{{lang|en|PowerShell}} には認証ストア、[[環境変数]]、シェル機能と[[エイリアス]]などのプロバイダが存在する。プロバイダモデルはコマンドレットと同様に拡張可能であり、第三者が独自のプロバイダを作成して{{lang|en|PowerShell}}に組み込むことができる。
 
*「実行ポリシー ({{lang|en|execution policies}})」という概念により、{{lang|en|PowerShell}}によるスクリプトの実行に対して大まかなセキュリティ上の制約を課すことができる。実行ポリシーはPowerShellが設定ファイルを読み込み、スクリプトを実行するための制約を定義する。{{lang|en|Restricted}}、{{lang|en|AllSigned}}、{{lang|en|RemoteSigned}}、{{lang|en|Unrestricted}}という四つの実行ポリシーが存在する。
 
*スクリプト作成者の識別や、スクリプトの安全性の保証のため、[[デジタル署名]]によってスクリプトに署名することができる。
 
*通常、コマンドラインオプションは省略せずに完全な英単語を用いるが、曖昧でない範囲で文字数を小さくすることができる。例えば、<code>-show-detailed-information</code>オプションは他に「<code>s</code>」で始まるオプションがなければ<code>-s</code>と指定することができる。
 
*ユーザ定義のタブ補完機能が利用できる。{{lang|en|Windows}}の<code>cmd.exe</code>はファイル名やディレクトリ名しか補完できなかった。
 
*コマンドの出力を変数に代入することができる。この変数はオブジェクトやオブジェクトの配列であり、後に任意の方法で処理することができる。
 
 
 
==使用例==
 
*「p」で始まるプロセスを全て停止する。
 
<source lang="ps1con">PS> Get-Process p* | Stop-Process</source>
 
*1000MB以上のメモリを占有するプロセスを検索し、停止する。
 
<source lang="ps1con">PS> Get-Process | Where { $_.WS -gt 1000MB } | Stop-Process</source>
 
*ディレクトリ中に含まれる全ファイルの合計サイズを計算して出力する。
 
<source lang="ps1con">PS> Get-Childitem | Measure-Object -property length -sum</source>
 
*文字列に含まれる小文字を大文字に変換した文字列を作る。
 
<source lang="ps1con">PS> "hello, world!".ToUpper()</source>
 
*<code>"internal"</code>という文字列の5文字目の直後に<code>"natio"</code>という文字列を挿入し、結果として<code>"international"</code>を得る。
 
<source lang="ps1con">PS> "internal".Insert(5, "natio")</source>
 
*指定したRSSフィードをダウンロードし、最新の8エントリーのタイトルを表示する。
 
<source lang="ps1con">
 
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
 
</source>
 
*変数 <var>$UserProfile</var> に[[環境変数]] <var>UserProfile</var> の値を代入する。
 
<source lang="ps1con">PS> $UserProfile = $env:UserProfile</source>
 
 
 
==脚注==
 
<references/>
 
 
 
==外部リンク==
 
*[http://social.technet.microsoft.com/wiki/contents/articles/14301.windows-powershell-ja-jp.aspx {{lang|en|Windows PowerShell (ja-JP)}}] - {{lang|en|Microsoft TechNet wiki}}
 
*[http://technet.microsoft.com/ja-jp/scriptcenter/dd742419 {{lang|en|Windows PowerShell}} でのスクリプティング] - {{lang|en|Microsoft TechNet}}
 
*[http://itpro.nikkeibp.co.jp/article/COLUMN/20061106/252598/ {{lang|en|Windows PowerShell}} 徹底解説] - {{lang|en|ITpro}}
 
*[http://blogs.msdn.com/powershell/ {{lang|en|Windows PowerShell}}] - {{lang|en|Windows PowerShell}} 開発チームのブログ。 {{en icon}}
 
 
 
{{Microsoft APIs}}
 
{{Windows Components}}
 
{{.NET}}
 
{{Windowsコマンド}}
 
{{DEFAULTSORT:Windows PowerShell}}
 
[[Category:.NET Framework]]
 
[[Category:オブジェクト指向言語]]
 
[[Category:プログラミング言語]]
 
[[Category:スクリプト言語]]
 
[[Category:マイクロソフトのプログラミング言語]]
 
[[Category:ソフトウェア開発キット]]
 

2018/10/23/ (火) 08:27時点における最新版



楽天市場検索: