パワーシェル

パワーシェル
Windows ターミナルでの PowerShell 7.5.0 セッションのスクリーンショット
パラダイム命令型パイプライン型オブジェクト指向型関数型リフレクション型
デザイン:ジェフリー・スノーバー、ブルース・ペイエット、ジェームズ・トゥルーハー(他)
開発者マイクロソフト
初登場2006年11月14日; 19年前 (2006-11-14)
安定版リリース
7.5.4 / 2025年10月20日; 30日前[1] [2] (2025-10-20)
プレビューリリース
7.6.0.preview.5 / 2025年10月9日; 41日前[3] (2025-10-09)
タイピングの規律強く安全で暗黙的で、ダイナミック
実装言語C#
プラットフォームPowerShell: .NET
Windows PowerShell: .NET フレームワーク
OS
ライセンスMITライセンス[4](ただしWindowsコンポーネントはプロプライエタリのまま)
ファイル名拡張子
  • .ps1 (スクリプト)
  • .ps1xml (XML ドキュメント)
  • .psc1 (コンソール ファイル)
  • .psd1 (データファイル)
  • .psm1 (スクリプトモジュール)
  • .pssc (セッション構成ファイル)
  • .psrc (ロール機能ファイル)
  • .cdxml (コマンドレット定義 XML ドキュメント)
Webサイトmicrosoft.com/powershell
影響を受けた
PythonKshPerlC#CLDCLSQLTclTk[5] ChefPuppet

PowerShellは、タスクの自動化と構成管理のためにMicrosoftが開発したシェル プログラムです。シェルとして一般的な機能として、対話型での使用を目的としたコマンドラインインタープリターと、専用の言語による自動化を目的としたスクリプトインタープリターを提供しています。当初はWindows専用としてWindows PowerShellとして知られていましたが、2016年8月18日にPowerShell Coreの導入によりオープンソース化されクロスプラットフォーム化されました。[6]前者は.NET Framework上に、後者は.NET(旧称.NET Core)上に構築されています。

PowerShellは現在のバージョンのWindowsにバンドルされており、 macOSLinuxにインストールできます[6] Windows 10ビルド14971以降、PowerShellはコマンドプロンプトに代わり、ファイルエクスプローラーに表示されるデフォルトのコマンドシェルになりました。[7] [8]

PowerShellでは、管理タスクは通常、コマンドレットcommand-letsと発音します)を介して実行されます。コマンドレットは、特定の操作を実装する特殊な.NETクラスです。コマンドレットは、ファイルシステムやWindowsレジストリなどの様々なデータストア内のデータにアクセスすることで機能します。これらのデータは、プロバイダー介しPowerShellで利用できます。サードパーティの開発者は、コマンドレットとプロバイダーをPowerShellに追加できます。 [9] [10]コマンドレットはスクリプトから使用でき、スクリプトはモジュールにパッケージ化できます。コマンドレットは.NET APIと連携して動作します。

PowerShell は.NET RemotingWS-ManagementCIM、およびSSHをサポートしているため、管理者はローカルとリモートの両方の Windows システムで管理タスクを実行できます。また、PowerShell はホスティングAPI も提供しており、これを使用することで PowerShell ランタイムを他のアプリケーションに埋め込むことができます。これらのアプリケーションは PowerShell の機能を使用して、グラフィカル インターフェイス経由で公開される操作も含め、特定の操作を実装できます。この機能は、Microsoft Exchange Server 2007で使用されており、管理機能を PowerShell コマンドレットおよびプロバイダーとして公開し、必要なコマンドレットを呼び出す PowerShell ホストとしてグラフィカル管理ツールを実装するために使用されています。[9] [11] Microsoft SQL Server 2008などの他の Microsoft アプリケーションも、PowerShell コマンドレット経由で管理インターフェイスを公開しています。[12]

PowerShellには、コマンドレット経由でアクセスできる、コンソールベースの包括的なヘルプ(Unixシェルマニュアルページに似ています)が含まれています。コマンドレット経由では、インターネットから最新のローカルヘルプコンテンツを取得できます。また、スイッチ経由でWebヘルプを個別に取得することもできますGet-HelpUpdate-Help-onlineGet-Help

背景

PowerShell を含むシェル プログラムは、MS-DOSXenixなどの古いオペレーティング システムのシェルに由来しています。これらのシステム機能は、ほぼ例外なくコマンド ライン インターフェイス(CLI)経由でユーザーに公開されていました(MS-DOS 5には、補完的なグラフィカルDOS シェルも付属していました)。Windows 9xファミリには、MS-DOS のコマンド ライン環境であるCOMMAND.COM がバンドルされていました。一方、 Windows NTおよびWindows CEファミリには、COMMAND.COM からの大幅なアップグレードである新しいcmd.exeが付属していました。両方の環境とも、内部コマンドと外部コマンドの両方に CLI を提供し、バッチ ファイル(スクリプト用の比較的原始的な言語)による自動化も提供しています。

COM経由で公開されるソフトウェア コンポーネントを直接使用できないなど、これらのシェルの制限に対処するため、Microsoft は1998 年にWindows 98でWindows Script Hostとそのコマンド ライン ベースのホストを導入しました。これはActive Scriptエンジンと統合されており、 JScriptVBScriptなどの互換性のある言語でスクリプトを記述できます。これらのスクリプトは COM コンポーネントを直接使用できますが、ドキュメントが比較的入手しにくく、セキュリティ対策の弱点を悪用した有名なコンピュータ ウイルスがいくつか発生したため、システムの脆弱性を突く攻撃として悪評を得ました。 cscript.exe

Windowsの異なるバージョンでは、 netshWMICなど、独自のコマンドセットを備えた様々な特殊用途のコマンドラインインタープリタが提供されていましたが、相互運用性はありませんでした。Windows Server 2003ではコマンドラインエクスペリエンスの改善がさらに試みられましたが、スクリプトのサポートは依然として不十分でした。[13]

カーミット

Microsoft プログラム マネージャー兼 PowerShell チーフ アーキテクトのJeffrey Snover 氏

1990年代後半には、インテルはマイクロソフトに、インテルCPU上で動作するWindowsを、将来のインテルCPUの開発をサポートするのにより適切なプラットフォームにするための支援を求めてきた。当時、インテルCPUの開発は、RISCアーキテクチャCPU上でSolarisUnixの派生版)を実行するサン・マイクロシステムズのコンピュータ上で行われていた。インテルの多くのKornShell自動化スクリプトをWindows上で実行する機能は、重要な機能であると認識されていた。マイクロソフト社内では、Kermitというコードネームで呼ばれていたKornShellのWindows移植版を作成する取り組みが始まった。[14]インテルは最終的に、インテルCPU上で動作可能なLinuxベースの開発プラットフォームに方向転換し、Kermitプロジェクトは不要になった。しかし、資金が十分あるチームを持つマイクロソフトのプログラムマネージャ、ジェフリー・スノーバーは、マイクロソフトが抱える管理自動化の問題に対して、より汎用的なソリューションを作成する機会があることに気付いた。

モナド

2002年までに、マイクロソフトはコマンドライン管理への新しいアプローチの開発を開始し、その中にはモナド(Microsoft Shell、MSHとも呼ばれる)と呼ばれるCLIも含まれていました。その背後にあるアイデアは、2002年8月にチーフアーキテクトのジェフリー・スノバーによって「モナド宣言」と呼ばれるホワイトペーパーで発表されました。[15] 2017年のインタビューで、スノバーはPowerShellの誕生について、WindowsでUnixツールを利用できるようにしようと試みたが、「 WindowsとLinuxの根本的なアーキテクチャの違い」のためにうまくいかなかったと述べています。具体的には、Linuxはすべてをテキストファイルと見なすのに対し、Windowsはすべてを「構造化データを返すAPI」と見なす点を指摘しました。両者は根本的に互換性がなかったため、彼は異なるアプローチを採用するに至りました。[16]

Monadは、斬新な設計を採用し、様々なコア管理タスクを自動化できる、拡張性の高い新しいCLIとなるはずでした。Microsoftは、2003年10月にロサンゼルスで開催されたProfessional Development Conferenceで初めてMonadを公開しました。数か月後、プライベートベータ版を公開し、最終的にパブリックベータ版へと発展しました。Microsoftは、2005年6月17日に最初のMonadパブリックベータ版を、2005年9月11日にBeta 2を、2006年1月10日にBeta 3を公開しました。

パワーシェル

PowerShellの最初のバージョン

Monadの最初の発表から1年半後の4月25日、マイクロソフトはMonadをWindows PowerShellに改名し、同社の管理技術サービスの重要な一部として位置付けると発表しました。[17] PowerShellのリリース候補版(RC版)1も同時にリリースされました。名称変更とRC版の両方で重要なのは、これが単なるアドオンではなく、Windowsのコンポーネントになったことです。

PowerShellバージョン1のリリース候補版2は2006年9月26日にリリースされ、最終版は2006年11月14日にWeb上で公開されました。以前のバージョンのWindows向けのPowerShellは2007年1月30日にリリースされました。 [18] PowerShell v2.0の開発はPowerShell v1.0の出荷前に開始されました。開発期間中、マイクロソフトは3つのコミュニティテクノロジプレビュー(CTP)を出荷しました。マイクロソフトはこれらのリリースを一般に公開しました。Windows PowerShell v2.0の最後のCTPリリースは2008年12月に公開されました。

PowerShell v2.0は、Windows 7およびWindows Server 2008 R2の不可欠な部分として、2009年8月に完成し、製造部門にリリースされました。Windows XP、Windows Server 2003、Windows Vista、Windows Server 2008向けのPowerShellのバージョンは2009年10月にリリースされ、32ビットおよび64ビットプラットフォームの両方でダウンロード可能です。[19] 2009年10月号のTechNet Magazineで、MicrosoftはPowerShellの熟練度を「今後数年間でWindows管理者に必要となる最も重要なスキル」と呼んでいます。[20]

Windows 10にはPowerShellのスクリプト検証スイートであるPesterが同梱されていました。[21]

Ubuntu 22.10上の PowerShell for Linux 7.3.1

2016年8月18日、マイクロソフトはPowerShellをオープンソース化し、Windows、macOSCentOSUbuntuをサポートするクロスプラットフォーム化したと発表しました[22][6]ソースコードはGitHubで公開されました。[23]オープンソースへの移行により、「PowerShell Core」と呼ばれるPowerShellの2番目のバージョンが生まれました。これは.NET Core上で動作します。これは、完全な.NET Framework上で動作する「Windows PowerShell」とは異なります[24]バージョン5.1以降、PowerShell CoreはWindows Server 2016 Nano Serverにバンドルされています。[25] [26]

パシュ

Pashというプロジェクトは広く知られているUnixシェル「 bash 」をもじったもので、 Monoフレームワークを介してPowerShellをオープンソースかつクロスプラットフォームで再実装したものです。[27] PashはIgor Moochnickによって開発され、C#で記述され、GNU General Public Licenseの下でリリースされました。Pashの開発は2008年に中断されましたが、2012年にGitHubで再開されました。 [28]そして、PowerShellが正式にオープンソースかつクロスプラットフォームになった2016年に開発は終了しました。[29]

デザイン

哲学

PowerShellの主要な設計目標は、Windows、Windows Management Instrumentation、.NET Framework、その他のソフトウェアに既に存在する多数のAPIを活用することでした。PowerShellのコマンドレットは、一般的に新しい機能を実装するのではなく、既存の機能をラップして公開します。その目的は、管理者と幅広い基盤機能との間に、管理者にとって使いやすく、より一貫性のあるインターフェースを提供することでした。PowerShellを使用すると、管理者は.NET、WMI、または低レベルAPIのコーディングを意識する必要はなく、PowerShellによって公開されるコマンドレットの使用に集中できます。この点において、PowerShellは新しい機能をほとんど追加せず、既存の機能を特定のユーザーにとってよりアクセスしやすいものにすることに重点を置いています。[30]

文法

PowerShellの開発者は、ツールのコア文法をPOSIX 1003.2 KornShellの文法に基づいて設計しました。[31]

しかし、PowerShellの言語はPHPPerl、その他多くの既存の言語の影響も受けています。[32]

名前付きコマンド

PowerShellは4種類の名前付きコマンドを実行できます。[33]

  • コマンドレットPowerShell と対話するように設計された.NET Frameworkプログラム)
  • PowerShell スクリプト (末尾に が付くファイル.ps1)
  • PowerShell関数
  • スタンドアロン実行可能プログラム

コマンドがスタンドアロン実行可能プログラムの場合、PowerShell はそれを別のプロセスで起動します。コマンドレットの場合は、PowerShell プロセスで実行されます。PowerShell は対話型のコマンドラインインターフェイスを提供し、そこでコマンドを入力して出力を表示できます。ユーザーインターフェイスでは、カスタマイズ可能なタブ補完が提供されます。PowerShell ではコマンドレットのエイリアスを作成できます。エイリアスはPowerShell によってテキスト形式で元のコマンドの呼び出しに変換されます。PowerShell はコマンドに対して名前付きパラメータと位置パラメータの両方をサポートしています。コマンドレットの実行時、引数値をパラメータにバインドする処理は PowerShell 自体によって行われますが、外部実行可能ファイルの場合、引数は PowerShell の解釈とは独立して外部実行可能ファイルによって解析されます。[34]

拡張型システム

PowerShell拡張型システムETS)は.NET型システムをベースにしていますが、拡張されたセマンティクス(例えば、propertySetやサードパーティの拡張性)を備えています。例えば、データフィールド、プロパティ、メソッドのサブセットのみを公開することで、オブジェクトの異なるビューを作成したり、カスタム書式設定や並べ替えの動作を指定したりすることができます。これらのビューは、XMLベースの構成ファイルを使用して元のオブジェクトにマッピングされます。[35]

コマンドレット

コマンドレットは、またはから派生した.NETクラスです。後者は、PowerShellランタイムと対話する必要がある場合に使用されます。[36]基本クラスは、、、およびメソッドを指定します。コマンドレットはこれらのメソッドをオーバーライドして、これらの関数が表すイベントに基づいて機能を提供します。オブジェクトがパイプライン入力を受け取ると、が呼び出されます。[37]オブジェクトのコレクションがパイプされている場合、コレクション内の各オブジェクトに対してメソッドが呼び出されます。コマンドレットクラスには、コマンドレットの名前を構成する動詞と名詞を指定する属性が必要です。CmdletPSCmdletBeginProcessing()ProcessRecord()EndProcessing()ProcessRecord() CmdletAttribute

コマンドレット名は、 Get-ChildItemのように動詞と名詞の命名パターンに従っており、自己文書化される傾向があります[36]一般的な動詞は列挙型として提供されます[38] [39]

コマンドレットがパイプライン入力またはコマンドラインパラメータ入力を受け取る場合、対応するプロパティがクラス内に存在し、ミューテーター実装が実装されている必要があります。PowerShellは、パラメータ値またはパイプライン入力を使用してミューテーターを呼び出します。これらの値は、ミューテーター実装によってクラス変数に保存されます。これらの値は、機能を実装するメソッドによって参照されます。コマンドラインパラメータにマップされるプロパティはParameterAttribute[40]でマークされ、の呼び出し前に設定されますBeginProcessing()。パイプライン入力にマップされるプロパティも[41]でマークされますParameterAttributeが、ValueFromPipeline属性パラメータが設定されています。[42]

コマンドレットは任意の.NET APIを使用でき、任意の.NET言語で記述できます。さらに、PowerShellでは、WriteObject()パイプラインへのオブジェクトの書き込みなど、PowerShell固有の機能にアクセスするためのAPIなど、特定のAPIが利用可能です。コマンドレットは、.NETデータアクセスAPIを直接使用することも、PowerShellのプロバイダーインフラストラクチャを使用することもできます。プロバイダーは、データストアを一意のパスを使用してアドレス指定できるようにします。データストアはドライブ文字を使用して公開され、その中の階層はディレクトリとしてアドレス指定されます。PowerShellには、ファイルシステムレジストリ証明書ストアのプロバイダーに加え、コマンドエイリアス、変数、関数の名前空間も用意されています。 [42] PowerShellには、ファイルシステムを含むさまざまなWindowsシステムを管理するためのコマンドレットや、Windows Management Instrumentationを使用してWindowsコンポーネントを制御するためのコマンドレットも含まれています。他のアプリケーションは、コマンドレットをPowerShellに登録して管理できるようにすることができます。また、コマンドレットがデータストア(データベースなど)を囲んでいる場合は、特定のプロバイダーを追加することもできます。[要出典]

コマンドレットは、モジュール経由または v2 スナップインの前にシェルに追加できます。ユーザーは、PowerShell の基本インストールに含まれるコマンドレットに限定されません。

さまざまなバージョンの基本 PowerShell インストールに含まれるコマンドレットの数:

  • Windows PowerShell 1.0: 129 [43]
  • Windows PowerShell 2.0: 632 [44]
  • Windows PowerShell 3.0: ≈1,000 [45]
  • Windows PowerShell 5.0: ≈1,300 [46]
  • Windows PowerShell 5.1: 1,586 [引用が必要]
  • PowerShell 7.0: 1,507 [引用が必要]
  • PowerShell 7.4: 1,656

パイプライン

Unix パイプラインに似たパイプライン セマンティクスを有効にするために、コマンドレットは入力を受け取り、結果をオブジェクトとして出力します。コマンドレットが複数のオブジェクトを出力する場合、コレクションの各オブジェクトは、次のオブジェクトが処理される前にパイプラインに渡されます。[36] PowerShell パイプラインは、ステージを接続するパイプ ( ) 演算子を使用して複雑なロジックを可能にします。ただし、PowerShell パイプラインは、ステージがオペレーティング システムによって調整される一連のプロセスとしてではなく、PowerShell ランタイム内で実行される点で、Unix パイプラインと異なります。さらに、バイト ストリームではなく、構造化された .NET オブジェクトがステージからステージへと渡されます。オブジェクトを使用して PowerShell ランタイム内でステージを実行すると、データ構造をシリアル化したり、テキスト出力を明示的に解析してデータ構造を抽出する必要がなくなります。 [47]オブジェクトは、含まれているデータに対して機能する特定の関数をカプセル化することもでき、これは受信側コマンドで使用できるようになります。[48] [49]パイプラインの最後のコマンドレットでは、PowerShellは出力オブジェクトを自動的にコマンドレットにパイプし、コマンドレットはオブジェクトをフォーマットオブジェクトのストリームに変換して画面にレンダリングします。[50] [51]|Out-Default

PowerShellオブジェクトは.NETオブジェクトであるため、.ToString()オブジェクトの状態をシリアル化するためのメソッドを備えています。さらに、PowerShellでは書式定義を指定できるため、表示するデータ要素とその表示方法を選択することで、オブジェクトのテキスト表現をカスタマイズできます。ただし、下位互換性を維持するために、外部実行ファイルをパイプラインで使用する場合は、PowerShellの型システムに直接統合するのではなく、オブジェクトを表すテキストストリームを受け取ります。[52] [53] [54]

スクリプト

PowerShellには、スクリプト用の動的型付け言語が含まれており、コマンドレットを用いて命令 的に複雑な操作を実装できます。この言語は、変数、関数、分岐()、ループ()、構造化エラー/例外処理、クロージャ/ラムダ式[55]をサポートし、.NETとの統合も可能です。PowerShellスクリプト内の変数には、 という接頭辞が付きます。変数には、コマンドレットの出力を含め、任意の値を割り当てることができます。文字列は、一重引用符または二重引用符で囲むことができます。二重引用符を使用した場合、変数は引用符で囲まれていても展開されます。ファイルへのパスを、ドル記号を先頭に付けた中括弧( のように)で囲むと、名前空間変数表記法と呼ばれ、ファイルの内容への参照が作成されます。左辺値として使用した場合、それに割り当てられたものはすべてファイルに書き込まれます。右辺値として使用した場合、ファイルの内容が読み込まれます。オブジェクトが割り当てられた場合は、保存される前にシリアル化されます。[56]if-then-elsewhiledoforforeach$${C:\foo.txt}


.オブジェクトのメンバーには、C#構文と同様の表記法を使用してアクセスできます。PowerShellには$args、コマンドラインから関数に渡されるすべてのコマンドライン引数の配列である や、$_パイプライン内の現在のオブジェクトを参照する などの特殊変数が用意されています。 [57] PowerShellには、配列連想配列も用意されています。PowerShell言語は、コマンドラインに入力された算術式を即座に評価し、GB、MB、KBなどの一般的な略語を解析します。[58] [59]

PowerShellでは、キーワードを使用してfunction関数を作成できます。単純な関数は、一般的に次のような形式になります。[60]

関数  ( [Type] $Param1 ,  [Type] $Param2 )  {  # 命令}

しかし、PowerShellでは、名前付きパラメータ、位置パラメータ、スイッチパラメータ、動的パラメータをサポートする高度な関数を使用できます。[60]

機能 動詞-名詞 { パラメータ  # 静的パラメータの定義  動的パラメータ { # 動的パラメータの定義 } 始める { # パイプラインの開始時に実行する命令のセット } プロセス { # パイプライン内の各項目に対して実行されるメイン命令セット } 終わり { # パイプラインの最後に実行する命令のセット }}

定義された関数は、次のいずれかの形式で呼び出されます。[60]

名前 値1 値2動詞-名詞 - パラメータ1 値1  -パラメータ 2 値2

[]PowerShellでは、括弧( )で囲まれた名前空間を指定し、コロン( )のペアを使用して静的メソッドを示すことで、任意の静的.NETメソッドを呼び出すことができます::[61]たとえば、次のようになります。

[コンソール] :: WriteLine ( "PowerShell" )

PowerShellにはオブジェクトを作成する方法が数十種類あります。一度作成すれば、記法を使ってオブジェクトのプロパティやインスタンスメソッドにアクセスできます.[61]

PowerShellは、生の文字列とエスケープされた文字列の両方を受け入れます。一重引用符で囲まれた文字列は生の文字列であり、二重引用符で囲まれた文字列はエスケープされた文字列です。PowerShellは、直線引用符と波引用符を同等に扱います。[62]

PowerShellでは以下の特殊文字がサポートされています: [63]

PowerShell の特殊文字
順序意味
`0ヌル
「あ警告
`bバックスペース
`eエスケープ(PowerShell 6 以降)
`fフォームフィード
`n改行
`rキャリッジリターン
`t水平タブ
`u{x}Unicodeエスケープ シーケンス (PowerShell 6 以降)
`v垂直タブ
--%ここから先はどんなキャラクターでも文字通りに扱う

エラー処理のために、PowerShell は .NET ベースの例外処理メカニズムを提供します。エラーが発生した場合、エラーに関する情報を含むオブジェクト(Exceptionオブジェクト)がスローされ、これはtry ... catch構文(trap構文もサポートされています)を使用してキャッチされます。PowerShell は、例外を実際にスローすることなく、実行をサイレントに再開するように設定できます。これは、単一のコマンド、単一のセッション、または永続的に実行できます。[64]

.ps1PowerShellを使用して記述されたスクリプトは、ファイルまたはファイル(後者はモジュールの実装に使用されます)のいずれかでセッションをまたいで保存できます.psm1。その後、スクリプト全体またはスクリプト内の個々の関数を使用できます。スクリプトと関数は、パイプライン内のコマンドとして使用でき、パラメータをバインドできるという点で、コマンドレットと同様に動作します。パイプラインオブジェクトは、関数、スクリプト、およびコマンドレット間でシームレスに渡すことができます。スクリプトが意図せず実行されるのを防ぐため、スクリプトの実行はデフォルトで無効になっており、明示的に有効にする必要があります。[65]スクリプトの有効化は、システムレベル、ユーザーレベル、またはセッションレベルのいずれかで実行できます。PowerShellスクリプトは、整合性を検証するために署名することができコードアクセスセキュリティの対象となります。[66]

PowerShell言語は、Cファミリーの多くのプログラミング言語でサポートされている科学的記法に似たバイナリプレフィックス記法をサポートしています。 [67]

ホスティング

PowerShellを管理アプリケーションに組み込むことも可能です。管理アプリケーションはPowerShellランタイムを使用して管理機能を実装します。このため、PowerShellはマネージドホスティングAPIを提供しています。APIを介して、アプリケーションは実行空間(PowerShellランタイムのインスタンスの1つ)をインスタンス化できます。実行空間はアプリケーションのプロセス内で実行され、オブジェクトとして公開されますRunspace[9]実行空間の状態はSessionStateオブジェクトに格納されます。実行空間が作成されると、PowerShellランタイムはインスタンスを初期化し、プロバイダーの初期化やコマンドレットの列挙などを行い、SessionStateそれに応じてオブジェクトを更新します。その後、実行空間は同期処理または非同期処理のいずれかのために開かれる必要があります。その後、コマンドの実行に使用できます。[要出典]

コマンドを実行するには、パイプライン(Pipelineオブジェクトで表される)を作成し、実行空間に関連付ける必要があります。パイプラインオブジェクトには、パイプラインを構成するコマンドレットが設定されます。PowerShellスクリプトなどの連続操作の場合、各ステートメントごとにPipelineオブジェクトが作成され、別のPipelineオブジェクト内にネストされます。[9]パイプラインが作成されると、PowerShellはパイプラインプロセッサを呼び出します。パイプラインプロセッサは、コマンドレットをそれぞれのアセンブリコマンドプロセッサ)に解決し、それらへの参照をパイプラインに追加し、パイプラインとの接続を表すためにInputPipe、、、OutputPipeおよびErrorOutputPipeオブジェクトに関連付けます。型は検証され、リフレクションを使用してパラメータがバインドされます。[9]パイプラインが設定されると、ホストはInvoke()コマンドを実行するメソッド、またはその非同期の同等メソッドを呼び出しますInvokeAsync()。パイプラインの最後にコマンドレットがある場合はWrite-Host、結果がコンソール画面に書き込まれます。ない場合は、結果がホストに渡され、ホストはさらに処理を適用するか、出力自体を表示します。[要出典]

Microsoft Exchange Server 2007は、ホスティングAPIを使用して管理GUIを提供しています。GUIに表示される各操作は、一連のPowerShellコマンド(パイプライン)にマッピングされています。ホストはパイプラインを作成し、実行します。実際、対話型PowerShellコンソール自体がPowerShellホストであり、コマンドラインで入力されたスクリプトを解釈しPipeline、必要なオブジェクトを作成して呼び出します。[要出典]

望ましい状態構成

DSCはソフトウェア環境をどのように構成すべきかを宣言的に指定することを可能にする。[68]

構成を実行すると、DSC はシステムが構成に記述された状態を確実に取得するようにします。DSC 構成はべき等です。ローカル構成マネージャー(LCM) は、リソース(DSC の命令型要素)によって記述された制御フローを使用してシステムを定期的にポーリングし、構成の状態が維持されていることを確認します。

バージョン

すべてのメジャーリリースは引き続きサポートされており、各メジャーリリースには以前のバージョンとの下位互換性が備わっています。[疑わしい議論する]

プロジェクトモナド

PowerShell は当初「Monad」というコード名を使用していましたが、2003 年 10 月にロサンゼルスで開催された Professional Developers Conference で初めて公開されました。

Windows PowerShell

1.0

Windows PowerShellと名付けられたバージョン1.0は、2006年11月にWindows XP SP2Windows Server 2003 SP1Windows Vista [69]向けにリリースされ、 Windows Server 2008のオプションコンポーネントとしてもリリースされました

2.0

Windows 7上の Windows PowerShell ISE v2.0 ( PowerShell スクリプトの統合開発環境)

バージョン2.0はWindows 7およびWindows Server 2008 R2と統合されており[70] 、 Windows XP Service Pack 3、Windows Server 2003 Service Pack 2、Windows Vista Service Pack 1向けにリリースされています。[71] [72]

このバージョンには、言語とホスティングAPIの変更に加えて、240以上の新しいコマンドレットが含まれています。[73] [74]

新しい機能は次のとおりです: [75] [76] [77]

  • リモート処理: WS-Management を使用すると、リモート マシンまたは多数のリモート マシンでスクリプトやコマンドレットを呼び出すことができます。
  • バックグラウンドジョブPSJobとも呼ばれ、コマンドシーケンス(スクリプト)またはパイプラインを非同期的に呼び出すことができます。ジョブはローカルマシンまたは複数のリモートマシンで実行できます。PSJob内の対話型コマンドレットは、ユーザー入力があるまでジョブの実行をブロックします。
  • トランザクション:コマンドレットを有効にすると、開発者はトランザクション操作を実行できます。PSTransaction の開始、コミット、ロールバックを行うトランザクションコマンドレットに加え、関連するコマンドレットおよびプロバイダー操作にトランザクションを管理および指示する機能が含まれています。PowerShell レジストリプロバイダーはトランザクションをサポートしています。
  • 高度な機能: 当初は「スクリプトコマンドレット」と呼ばれていたこれらのバンドルされたコマンドレットは、後に「高度な機能」に名前が変更されました。[78]
  • SteppablePipelines : これにより、ユーザーはコマンドレットのBeginProcessing()ProcessRecord()および関数がいつ呼び出されるか制御できます。EndProcessing()
  • モジュール:スクリプト開発者と管理者は、スクリプトを自己完結的で再利用可能なユニットに整理・分割できます。モジュールのコードは、自身の自己完結的なコンテキストで実行され、モジュール外部の状態には影響を与えません。モジュールは、スクリプトを用いて制限された実行空間環境を定義できます。モジュールには、永続的な状態と、パブリックおよびプライベートなメンバーがあります。
  • データ言語: データ定義をスクリプトから分離し、ローカライズされた文字列リソースを実行時にスクリプトにインポートできるようにする言語のドメイン固有のサブセット(スクリプトの国際化)。
  • スクリプトデバッグ:スクリプトまたは関数にブレークポイントを設定できます。ブレークポイントは、行、行と列、コマンド、変数の読み取りまたは書き込みアクセスに設定できます。スクリプトからブレークポイントを制御するためのコマンドレットのセットが含まれています。
  • イベント処理:管理イベントおよびシステムイベントのリッスン、転送、およびそれに応じた処理を可能にします。イベント処理により、ホストは管理対象エンティティの状態変化を通知されます。また、スクリプトからObjectEventsPSEventsWmiEventsをサブスクライブし、同期および非同期で処理することも可能です。
  • 統合スクリプト環境 (ISE) : 統合デバッガー、構文の強調表示、タブ補完、タブ付き UI で最大 8 つの Unicode 対応コンソール (実行スペース) を提供する GUI ベースのホスト。また、スクリプト内の選択した部分のみを実行する機能も備えています。
  • ネットワークファイル転送:バックグラウンドインテリジェント転送サービス(BITS)を使用して、マシン間での優先順位付け、スロットル制御、非同期のファイル転送をネイティブにサポートします。 [79]
  • 新しいコマンドレット: ISE がインストールされ有効になっている場合、システムで許可されていれば、WPF GridViewOut-GridViewオブジェクトに表形式のデータを表示する が含まれます。
  • 新しい演算子: -Split、、-Joinおよび Splatting ( @) 演算子。
  • Try-Catch-Finally による例外処理: 他の .NET 言語とは異なり、単一の catch ブロックに対して複数の例外タイプが許可されます。
  • ネスト可能なヒア文字列ヒア文字列が改良され、ネストできるようになりました。[80]
  • ブロックコメント<#:とを区切り文字として使用したブロックコメントのサポート#>[81]
  • 新しいAPI:新しいAPIは、パーサーとランタイムのより詳細な制御をホストに委譲することから、実行空間()のコレクションの作成と管理、 PowerShellの設定済みサブセットのみの呼び出しを許可する制限付き実行空間のRunspacePools作成まで、多岐にわたります。新しいAPIは、トランザクションへの参加もサポートします。

3.0

バージョン3.0は、Windows 8Windows Server 2012Windows 7 Service Pack 1、Windows Server 2008 Service Pack 1、Windows Server 2008 R2 Service Pack 1と統合されます。[82] [83]

バージョン3.0は、より大規模なパッケージであるWindows Management Framework 3.0 (WMF3)の一部であり、リモート処理をサポートするWinRMサービスも含まれています。 [83] MicrosoftはWMF3のコミュニティテクノロジプレビューを複数回リリースしました。Windows Management Framework 3.0の初期コミュニティテクノロジプレビュー2 (CTP 2) バージョンは、2011年12月2日にリリースされました。[84] Windows Management Framework 3.0は2012年12月に一般提供が開始され[85]、Windows 8およびWindows Server 2012にデフォルトで含まれています。[86]

新しい特徴は次のとおりです: [83] [87] : 33–34 

  • スケジュールされたジョブ: Windows タスク スケジューラインフラストラクチャを使用して、ジョブを事前に設定された日時に実行するようにスケジュールできます
  • セッション接続:セッションを切断および再接続できるようになりました。リモートセッションは一時的なネットワーク障害に対してより耐性が強くなりました。
  • コード記述の改善コード補完(IntelliSense)とスニペットが追加されました。ISE では、ダイアログ ボックスを使用してコマンドレットのパラメータを入力できます。
  • 委任のサポート: 管理タスクは、その種類のタスクに対する権限を持たないユーザーに、永続的な追加権限を付与することなく委任できます。
  • ヘルプの更新: ヘルプ ドキュメントは Update-Help コマンドで更新できます。
  • 自動モジュール検出:モジュールは、そのモジュールのコマンドが呼び出されるたびに暗黙的にロードされます。コード補完は、ロードされていないモジュールでも機能します。
  • 新しいコマンドget-WmiObject win32_logicaldisk:以前は WMI 経由で実行されていたディスク、ボリューム、ファイアウォール、ネットワーク接続、プリンターを管理する機能を含む、数十の新しいモジュールが追加されました。[詳細な説明が必要]

4.0

バージョン4.0は、Windows 8.1Windows Server 2012 R2Windows 7 SP1Windows Server 2008 R2 SP1、Windows Server 2012と統合されています。[88]

新しい機能は次のとおりです:

  • 望ましい状態構成: [89] [90] [91] DMTF管理標準とWS-Managementプロトコルを使用するシステムの構成データの展開と管理を可能にする宣言型言語拡張とツール
  • 新しいデフォルトの実行ポリシー: Windows サーバーでは、デフォルトの実行ポリシーは になりましたRemoteSigned
  • Save-Help : リモート コンピューターにインストールされているモジュールのヘルプを保存できるようになりました。
  • 強化されたデバッグ:デバッガーは、ワークフローのデバッグ、リモート スクリプトの実行、セッションの再接続にわたるデバッグ セッションの保持をサポートするようになりました。
  • -PipelineVariable スイッチ: プログラミング目的で現在のパイプライン オブジェクトを変数として公開する新しいユビキタス パラメーター
  • 物理およびHyper-Vの仮想ネットワーク スイッチを管理するためのネットワーク診断
  • Where および ForEachメソッド構文は、オブジェクトをフィルタリングおよび反復処理する代替方法を提供します。

5.0

バージョン5.0アイコン

バージョン5.0は、重大なバグを含む最初のリリースの後、2016年2月24日にWindows Management Framework (WMF) 5.0とともに再リリースされました。[92]

主な機能は次のとおりです:

  • オブジェクト指向プログラミング用のクラスを作成する新しいclass キーワード
  • 列挙型enumを作成する新しいキーワード
  • OneGetChocolatey パッケージマネージャーをサポートするコマンドレット[93]
  • スイッチ管理のサポートをレイヤー2ネットワークスイッチに拡張します。[94]
  • バックグラウンド ジョブと他のプロセスでホストされているインスタンス (それぞれ「実行空間」と呼ばれます) のデバッグ
  • Desired State Configuration (DSC) ローカル構成マネージャー (LCM) バージョン 2.0
  • DSCの部分構成
  • DSC ローカル構成マネージャーのメタ構成
  • クラスを使用した DSC リソースの作成
5.1

バージョン5.1は、2016年8月2日のWindows 10 Anniversary Update [95]およびWindows Server 2016 [96]とともにリリースされました。PackageManagementはプロキシをサポートし、PSReadLineはViModeをサポートし、2つの新しいコマンドレットGet-TimeZoneとSet-TimeZoneが追加されました。LocalAccountsモジュールでは、ローカルユーザーアカウントの追加/削除が可能です。[97] Windows 7、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2向けのプレビュー版が2016年7月16日にリリースされ、[98] 2017年1月19日にリリースされました。 [99]

バージョン5.1は、「Desktop」と「Core」の2つのエディションで提供される最初のバージョンです。「Desktop」エディションは.NET Frameworkを使用する継続製品ラインであり、「Core」エディションは.NET Core上で動作し、Windows Server 2016 Nano Serverにバンドルされています。後者はフットプリントが小さい代わりに、クリップボードの管理やコンピューターのドメイン参加のためのコマンドレット、WMIバージョン1のコマンドレット、イベントログのコマンドレット、プロファイルなど、一部の機能が欠けています。[26]これはWindows専用の最終バージョンでした。バージョン5.1はWindows 10、Windows 11、Windows Server 2022にプリインストールされていますが、.NETバージョンは別途インストールする必要があり、.NET Frameworkバージョンと並行して動作できます。[100] [101]

PowerShell コア

6.0

PowerShell Coreに改名されたバージョン6.0は、2016年8月18日に初めて発表されました。このとき、Microsoftは同製品をクロスプラットフォーム化し、Windowsに依存しない、無料のオープンソースにすることを発表したのです。[6] 2018年1月10日にWindows、macOSLinux向けに一般提供が開始されました[102]独自のサポートライフサイクルがあり、Windows 10で導入されたMicrosoftのライフサイクルポリシーに準拠しています。PowerShell Coreの最新バージョンのみがサポートされます。Microsoftは、PowerShell Core 6.0のマイナーバージョンを6ヶ月ごとに1つリリースする予定です。[103]

このバージョンにおける最も重要な変更点は、他のプラットフォームへの拡張です。Windows管理者にとって、このバージョンには大きな新機能は含まれていませんでした。2018年1月11日に行われたコミュニティへのインタビューで、開発チームはWindows ITプロフェッショナルがバージョン5.1からバージョン6.0に移行する際に最も期待される10のことを挙げるよう求められました。これに対し、MicrosoftのAngel Calvo氏は、クロスプラットフォームとオープンソースの2つしか挙げることができませんでした。[104] PowerShell 6では、一部の例外を除き、デフォルトのエンコーディングがUTF-8に変更されました。[ 105 ] (バージョン7.4では、UTF-8への変更がさらに拡大しました)[106]

6.1

マイクロソフトによると、バージョン6.1の新機能の一つは「Windows 10およびWindows Server 2019の1900以上の既存コマンドレットとの互換性」である。[107]しかし、これらのコマンドレットの詳細は変更ログの完全版には記載されていない。[108]マイクロソフトは後に、PowerShell CoreがWindows PowerShell 5.1を置き換えることができず、Windowsで普及しなかったため、この数は不十分だったと主張している。[109]しかし、Linuxでは人気があった。[109]

6.2

バージョン6.2は、主にパフォーマンスの向上、バグ修正、開発者の生産性を向上させる小さなコマンドレットと言語の機能強化に重点を置いています。[110]

パワーシェル

7.0

PowerShellに改名されたバージョン7は、以前の製品ラインであるPowerShell CoreとWindows PowerShellに取って代わります。[111] [109]開発の焦点は、バージョン7をバージョン5.1の実用的な代替品にすること、つまりWindowsに付属するモジュールとの互換性に関してバージョン5.1とほぼ同等にすることでした。[112]

新しい機能は次のとおりです: [113]

  • 並列処理を処理するのに役立つコマンドレット-ParallelスイッチForEach-Object
  • 新しいエラービュー
  • コマンドGet-Errorレット
  • パイプラインの連鎖演算子 (&&および||) を使用すると、パイプライン内の次のコマンドレットを条件付きで実行できます。
  • 三項演算のための?:演算子
  • ヌル??合体演算子
  • null合体??=代入演算子
  • クロスプラットフォームInvoke-DscResource(実験的)
  • Out-GridViewコマンドレットの復活
  • -ShowWindowスイッチの返却Get-Help
7.2

バージョン7.2は、バージョン7.0に続く長期サポートバージョンです。.NET 6.0を使用し、Linux用のユニバーサルインストーラーパッケージを備えています。Windowsでは、バージョン7.2以降のアップデートはMicrosoft Updateサービスを通じて提供されます。この機能はバージョン6.0から7.1では提供されていません。[114]

7.3

バージョン7.3には、一般的なコマンドレットの更新と修正、リリースパイプラインでのフレームワーク依存パッケージのテスト、ビルドとパッケージの改善が含まれています。[115]

7.4

バージョン7.4は.NET 8をベースにしており、長期サポート(LTS)リリースとみなされています。[116]

変更点は以下の通り: [117]

7.5

バージョン7.5は、2025年1月にリリースされた最新の安定版リリースで、.NET 9.0.1をベースに構築されています。パフォーマンス、ユーザビリティ、セキュリティの強化が含まれています。[118]主な更新内容には、タブ補完の改善(型推論の改善、新しい引数補完機能など)に加え、Invoke-WebRequestおよびInvoke-RestMethodの修正が含まれています。また、このリリースでは、新しいConvertTo-CliXmlおよびConvertFrom-CliXmlコマンドレットが追加され、PSReadLineやMicrosoft.PowerShell.PSResourceGetなどのコアモジュールが更新されています。互換性に影響する変更点としては、Test-Pathパラメータの処理方法の更新と、New-FileCatalogのデフォルト設定などがあります。

GAリリースの前に、PowerShell v7.5.0のプレビューリリースが5回、RCリリースが1回ありましたが、[119]このバージョンの完全リリースのブログ投稿が間もなく予定されています。

7.6

バージョン7.6は.NET 9をベースにした最新のプレビューリリースです。最初のプレビューリリースv7.6.0-preview.2 [120]は2025年1月15日にリリースされました。

変更点は以下のとおり: 未定[121]

類似コマンドを持つコマンドレットの比較

以下の表には、PowerShell に付属する様々なコマンドレットが示されています。これらのコマンドレットは、他のシェルのコマンドと非常によく似た機能を持っています。これらのコマンドレットの多くは、他のシェルのユーザーにも使い慣れた操作性を実現するために、定義済みのエイリアスを通じてユーザーに公開されています。

コマンドレットと他のシェルのコマンドの比較
コマンドレット定義済み
エイリアス
コマンドプロンプト
コマンド
Unixシェル
コマンド
機能性
クリアホスト[a]clsクリアclsクリア画面をクリアします
比較オブジェクト比較、相違fc差分2つのファイルの内容を比較する
コピーアイテムcpiコピーcpコピーcpファイルとフォルダをコピーします
Get-ChildItemgci、dir、ls [b]ディレクターlsファイルとフォルダを一覧表示します
Get-コマンドgcmヘルプどこでタイプ which compgen利用可能なコマンドを一覧表示し、コマンドパスを取得します
コンテンツの取得gctypecatタイプファイルの内容を報告します
日付を取得する日付+時刻日付日付と時刻を報告します
ヘルプを取得助けて[c]ヘルプところでコマンドのドキュメントを報告します
履歴の取得ghyh歴史ドスキー /歴史fc -l履歴[d]以前のコマンドを一覧表示します
位置情報の取得glpwdCDパスワード作業ディレクトリを報告します
取得プロセスGPSPStlist[e] タスクリスト[f]追伸実行中のプロセスを報告
呼び出しWebリクエストiwrcurlwget [g]カール[122]wget curlインターネットからコンテンツをダウンロードする
測定オブジェクト測定トイレテキストの文字数、単語数、行数をカウントします。PowerShellはオブジェクトの数値プロパティのサマリーを追加します。
アイテムの移動mimovemv動く動画ファイルとフォルダを移動する
ポップロケーションポップドポップドポップド作業ディレクトリを最後にプッシュしたパスに戻します
プッシュロケーションプッシュされたプッシュされたプッシュされた作業ディレクトリのパスをプッシュし、作業ディレクトリを変更します
読み取りホスト/P を設定読むコマンドラインから変数に入力を読み取ります
アイテムの削除ridelErasermdirrdrmdel erase rmdir rdrm rmdirファイルまたはフォルダを削除します
名前変更アイテムrnirenren名前変更動画ファイルまたはフォルダの名前を変更します
スケジュールされたジョブの登録 schtasks [123]cronタスクを別の時間に実行するようにスケジュールする
文字列を選択sls検索検索文字列グレップパターンに一致するファイルの行を報告します
日付設定日付+時刻日付 -s日付と時刻をリセットします
場所の設定slcdchdircd chdirCD作業パスを変更する
変数の設定svセットセットenvexportsetsetenv環境変数の内容を作成または変更します
ソートオブジェクト選別選別選別テキスト行を並べ替えます。コマンドレットはオブジェクトも並べ替えます。
スタート-スリープ寝る寝るタイムアウト[h]現在のプロセスを指定された時間だけ一時停止します。
プロセス停止sppsキルキル [e] タスクキル[f]殺す[i]実行中のプロセスを停止します
ティーオブジェクトティーティー入力をファイルまたは変数にパイプし、パイプラインに沿って入力を渡します。
テスト接続ピンピンピンICMPエコー要求をリモートマシンに送信する
書き込み出力エコー書き込みエコーエコーテキストを標準出力に書き込む

注記

  1. ^ 定義済み関数として実装
  2. ^ lsは PowerShell Core の Linux バージョンには存在しません
  3. ^ manは PowerShell Core の Linux バージョンには存在しません
  4. ' ^ fcはPOSIX標準で定義されていますが、history は定義されていません。ただし、ほとんどのUnix実装ではhistoryも定義されています。
  5. ^ ab Windows NT 4Windows 98 リソースキット、Windows 2000 サポートツールで利用可能
  6. ^ ab Windows XP Professional Editionで導入
  7. ^ curlおよびwgetPowerShell Core には、同様の名前のネイティブコマンドと干渉しないように、これらのコマンドは存在しません。
  8. ^ Windows コマンドシェルのみ
  9. ^ UNIXではプロセスに任意のシグナルを送るためにも使われますが、「Terminate」シグナルは単にデフォルトです

ファイル名拡張子

拡大説明
.ps1スクリプトファイル[124]
.psd1モジュールのマニフェストファイル。通常はスクリプトモジュールまたはバイナリモジュールに付属しています[125]
.psm1スクリプトモジュールファイル[126]
.ps1xmlフォーマットと型定義ファイル[54] [127]
.psc1コンソールファイル[128]
.psscセッション構成ファイル[129]
.psrc役割能力ファイル[130]

アプリケーションサポート

応用バージョンコマンドレットプロバイダー管理GUI
Exchangeサーバー2007402はいはい
Windows サーバー2008はいはいいいえ
マイクロソフトSQLサーバー2008はいはいいいえ
マイクロソフト シェアポイント2010はいはいいいえ
システムセンター構成マネージャー2012 R2400以上はいいいえ
システムセンターオペレーションマネージャー200774はいいいえ
システム センター 仮想マシン マネージャー2007はいはいはい
システムセンターデータ保護マネージャー2007はいいいえいいえ
Windows コンピューティング クラスター サーバー2007はいはいいいえ
Microsoft Transporter Suite for Lotus Domino [131]08.02.001247いいえいいえ
Microsoft PowerTools for Open XML [132]1.033いいえいいえ
IBM WebSphere MQ [133]6.0.2.244いいえいいえ
IoT Coreアドオン[134]74未知未知
Active Directory用のQuest管理シェル[135]1.795いいえいいえ
特殊作戦ソフトウェアSpecops Command [136]1.0はいいいえはい
VMware vSphere PowerCLI [137]6.5 R1500以上はいはい
インターネット情報サービス[138]7.054はいいいえ
Windows 7トラブルシューティング センター[139]6.1はいいいえはい
Microsoft展開ツールキット[140]2010はいはいはい
NetApp PowerShellツールキット[141] [142]4.22000以上はいはい
JAMSスケジューラ – ジョブアクセスおよび管理システム[143]5.052はいはい
UIオートメーション[144]0.8432いいえいいえ
デル・イコールロジック[145]3.555いいえいいえ
ログインインベントリ[146]5.8はいはいはい
SePSX [147]0.4.139いいえいいえ
スクリプトランナー7.3はいはいはい

参照

参考文献

  1. ^ "PowerShell". Microsoft Apps . 2025年10月20日閲覧
  2. ^ 「PowerShell v7.5.4 リリース」。GitHub 2025年10月20日。 2025年10月20日閲覧
  3. ^ 「PowerShell v7.6.0-preview.5 リリース」。GitHub 2025年10月9日。 2025年10月20日閲覧
  4. ^ 「PowerShell for every system!」 2017年6月12日 – GitHub.com経由。
  5. ^ Snover, Jeffrey (2008年5月25日). 「PowerShellとWPF:WTF」. Windows PowerShellブログ. Microsoft.
  6. ^ abcd Bright, Peter (2016年8月18日). 「PowerShellはMicrosoftの最新オープンソースリリース、LinuxとOS Xに登場」Ars Technica . Condé Nast . 2020年4月9日時点のオリジナルよりアーカイブ。 2020年5月12日閲覧
  7. ^ 「PC向けWindows 10 Insider Preview Build 14971を発表」。2016年11月17日。
  8. ^ 「PowerShell がコマンド プロンプトに取って代わります」。
  9. ^ abcde "powershell" . 2023年3月13日閲覧
  10. ^ Truher, Jim (2007年12月). 「カスタムコマンドでWindows PowerShellを拡張する」. MSDN Magazine . Microsoft. 2008年10月6日時点のオリジナルよりアーカイブ。
  11. ^ Lowe, Scott (2007年1月4日). 「Exchange 2007:コマンドラインに慣れよう」. TechRepublic . CBS Interactive . 2018年11月16日時点のオリジナルよりアーカイブ2020年5月12日閲覧。
  12. ^ Snover, Jeffrey (2007年11月13日). 「PowerShell の SQL Server サポート!」. Windows PowerShell ブログ(ブログ投稿). Microsoft. 2007年11月15日時点のオリジナルよりアーカイブ。 2007年11月13日閲覧
  13. ^ Dragan, Richard V. (2003年4月23日). 「Windows Server 2003、あらゆる面で改善を実現」. PCMag.com . Ziff Davis .ここで注目すべき機能は、事実上すべての管理ユーティリティがコマンドラインから操作できるようになったことです(そのほとんどはtelnet経由でも利用可能です)。
  14. ^ ジョーンズ、ドン (2020). 『アイデアの殻:PowerShell の知られざる歴史』ドン・ギャノン=ジョーンズ. p. 25. ISBN 978-1-9536450-3-6
  15. ^ Jeffrey P. Snover (2002年8月8日). 「モナド宣言」(PDF) . Windows PowerShell ブログ. Microsoft . 2021年4月2日閲覧
  16. ^ Biggar and Harbaugh (2017年9月14日). 「Windows PowerShellの背後にいる人物」. To Be Continuous (ポッドキャスト). Heavybit . 2017年9月14日閲覧
  17. ^ 「Windows PowerShell (Monad) が登場」。Windows PowerShell ブログ。Microsoft 2006年4月25日。
  18. ^ Snover, Jeffrey (2006年11月15日). 「Windows PowerShell と Windows Vista」. Windows PowerShell ブログ(ブログ投稿). Microsoft .
  19. ^ 「Windows Management Framework (Windows PowerShell 2.0、WinRM 2.0、および BITS 4.0)」。サポート。Microsoft 。 2013年9月30日。2013年10月13日時点のオリジナルよりアーカイブ。
  20. ^ Posey, Brien (2009年10月6日). 「PowerShellの使い方を学ぶべき10の理由」. TechRepublic . 2021年4月2日閲覧
  21. ^ 「Pesterとは何か、なぜ気にする必要があるのか​​?」2015年12月14日。
  22. ^ Snover, Jeffrey (2016年8月18日). 「PowerShell はオープンソース化され、Linux で利用可能になりました」. Microsoft Azure ブログ. Microsoft .
  23. ^ “PowerShell/PowerShell”. GitHub . 2016年8月18日閲覧
  24. ^ Hansen, Kenneth; Calvo, Angel (2016年8月18日). 「Linuxとオープンソース上のPowerShell!」. Windows PowerShellブログ. Microsoft .
  25. ^ Foley, Mary Jo (2016年8月18日). 「MicrosoftがPowerShellをオープンソース化し、LinuxとMac OS Xに対応」ZDNet . CBS Interactive .
  26. ^ ab 「Nano Server上のPowerShell」。TechNet。Microsoft 201610月20日。
  27. ^ "Pash". SourceForge . Dice Holdings, Inc. 2011年9月27日閲覧
  28. ^ 「Pashプロジェクト」GitHub 。 2013年4月10日閲覧
  29. ^ 「Pashは廃止されました · Issue #429 · Pash-Project/Pash」。GitHub 2019年11月26日閲覧
  30. ^ ジョーンズ、ドン (2020). 『アイデアの殻:PowerShell の知られざる歴史』 ドン・ギャノン=ジョーンズ. p. 45. ISBN 978-1-9536450-3-6
  31. ^ Payette, Bruce (2008). Windows PowerShell in Action. Manning Pubs Co Series. Manning. p. 27. ISBN 9781932394900. 2016年7月22日閲覧。PowerShellのコア言語は、 KornシェルのPOSIX 1003.2文法に基づいています
  32. ^ ジョーンズ、ドン (2020). 『アイデアの殻:PowerShell の知られざる歴史』ドン・ギャノン=ジョーンズ. p. 109. ISBN 978-1-9536450-3-6
  33. ^ "about_Command_Precedence". TechNet . Microsoft . 2014年5月8日.
  34. ^ Wheeler, Sean (2021年9月7日). 「解析について - PowerShell」. Microsoft Docs . 2021年12月5日閲覧
  35. ^ 「Windows PowerShell 拡張型システム」 。200711 月 28 日閲覧
  36. ^ abc 「Windows PowerShell コマンドレット」 。 2007年11月28日閲覧
  37. ^ 「最初のコマンドレットを作成する」 。 2007年11月28日閲覧
  38. ^ "Get-Verb". TechNet . Microsoft . 2014年5月8日.
  39. ^ 「コマンドレット 概要」。MSDN。Microsoft 2014年5月8日。
  40. ^ 「コマンドライン入力を処理するパラメータの追加」 。 2007年11月28日閲覧
  41. ^ 「パイプライン入力を処理するパラメータの追加」 。 2007年11月28日閲覧
  42. ^ 「Windows PowerShell プロバイダー」 。201010 月 14 日閲覧
  43. ^ 吉澤智明、ラモス・ダーバル(2012年9月29日)「PowerShell 1.0 コマンドレット」TechNet記事、Microsoft。
  44. ^ 吉澤智明 (2012年7月10日). 「PowerShell 2.0 コマンドレット」. TechNet 記事. Microsoft.
  45. ^ Wilson, Ed (2013). 「1. Windows PowerShell 3.0 の概要」. Windows Powershell 3.0 ステップバイステップ. カリフォルニア州セバストポル: Microsoft Press . ISBN 978-0-7356-7000-6OCLC  829236530。Windows PowerShell 3.0には、Windows 8に約1,000個のコマンドレットが付属しています
  46. ^ Wilson, Ed (2015). 「1: Windows PowerShell 5.0 の概要」. Windows PowerShell Step by Step (第3版). ワシントン州レドモンド: Microsoft Press . ISBN 978-1-5093-0043-3OCLC  927112976。Windows PowerShell 5.0には、Windows 10で約1,300個のコマンドレットが付属しています
  47. ^ 「Windows PowerShell オーナーズマニュアル: Windows PowerShell のパイプとパイプライン」。TechNet。Microsoft 20119月27日閲覧
  48. ^ Jones, Don (2008). 「Windows PowerShell – パイプラインの再考」. Microsoft TechNet . Microsoft . 2007年11月28日閲覧
  49. ^ 「Windows PowerShell オブジェクトの概念」。2007年8月19日時点のオリジナルよりアーカイブ2007年11月28日閲覧。
  50. ^ 「PowerShell のフォーマットと出力の実際の仕組み」 。200711 月 28 日閲覧
  51. ^ 「詳細 – PowerShell のフォーマットは実際どのように機能するのか?」2007 年11 月 28 日閲覧
  52. ^ "about_Pipelines". TechNet . Microsoft . 2014年5月8日.
  53. ^ "about_Objects". TechNet . Microsoft . 2014年5月8日.
  54. ^ ab "about_Format.ps1xml". TechNet . Microsoft . 2014年5月8日.
  55. ^ 「PowerShell の匿名関数とコード ブロック」 。20121 月 21 日閲覧
  56. ^ ペイエット、ブルース (2007). Windows PowerShell in Action. マニング. p. 144. ISBN 978-1-932394-90-0
  57. ^ 「Windows PowerShellの変数入門」。2018年5月27日時点のオリジナルよりアーカイブ2007年11月28日閲覧。
  58. ^ 「バイト変換」。Windows PowerShell 今週のヒント。2009年10月22日。 2013年11月15日閲覧
  59. ^ Ravikanth (2013年5月20日). 「PowerShellの乗数を使用せずにサイズ単位(KB、MB、GB、TB、PB)に変換する」. PowerShell Magazine .
  60. ^ abc "about_Functions". Microsoft TechNet . Microsoft . 2013年10月17日. 2013年11月15日閲覧
  61. ^ ab 「Windows PowerShell による軽量テスト」 。200711 月 28 日閲覧
  62. ^ アンジェロプロス、アレックス、カレン、ベモウスキー(2007年12月4日)。「PowerShell がスマート引用符の機能を強化」Windows IT Pro 、ペントンメディア2013年11月15日閲覧
  63. ^ 「特殊文字について」。Powershell / スクリプト。Microsoft 2017年6月8日。 2019年6月20日閲覧
  64. ^ 「Trap [Exception] { "PowerShell内" }」 。 2007年11月28日閲覧
  65. ^ 「Windows PowerShell スクリプトの実行」。Microsoft 200711月28日閲覧。
  66. ^ "about_Signing". Microsoft TechNet . Microsoft . 2013年10月17日. 2013年11月15日閲覧
  67. ^ Lee Holmes (2006年9月). Windows PowerShell クイックリファレンス. O'Reilly Media.
  68. ^ eslesar (2023年5月23日). 「Windows PowerShell Desired State Configuration の概要」. msdn.microsoft.com .
  69. ^ Chung, Leonard; Snover, Jeffrey; Kumaravel, Arul (2006年11月14日). 「Windows PowerShell 1.0 リリース完了!」. Windows PowerShell ブログ. Microsoft .
  70. ^ 「PowerShell は Windows Server 08 R2 (WS08R2) および Windows 7 (W7) にデフォルトでインストールされます!」Windows PowerShell ブログ。Microsoft。200810 月 28 日。20119 月 27 日閲覧
  71. ^ 「Windows Management Framework が登場!」 2009年10月27日. 2009年10月30日閲覧
  72. ^ 「Microsoft サポート技術情報: Windows Management Framework (Windows PowerShell 2.0、WinRM 2.0、および BITS 4.0)」。Support.microsoft.com、2011年9月23日。 2011年9月27日閲覧
  73. ^ 「W7とWS08R2を誇りに思い、楽観視している574の理由」Windows PowerShellブログMicrosoft、2008年10月29日。 2011年9月27日閲覧
  74. ^ Snover, Jeffrey (2008). 「PowerShell: 管理しやすいWebサービスの作成」. 2008年10月13日時点のオリジナルよりアーカイブ2015年7月19日閲覧。
  75. ^ 「PowerShell 2.0 CTP の新機能」 。200711 月 28 日閲覧
  76. ^ 「Windows PowerShell V2 Community Technology Preview 2 (CTP2) – releaseNotes」。Microsoft . 2008年5月6日時点のオリジナルよりアーカイブ2008年5月5日閲覧。
  77. ^ “PowerShell 1.0とPowerShell 2.0の違い”. 2010年9月17日時点のオリジナルよりアーカイブ2010年6月26日閲覧。
  78. ^ Jones, Don (2010年5月). 「Windows PowerShell: スクリプトでコマンドレットを記述する」. TechNet Magazine . Microsoft.
  79. ^ 「GoGridスナップイン - PowerShellによるクラウドサービスの管理」。Windows PowerShellブログ。Microsoft 。 2008年10月14日。 2011年9月27日閲覧
  80. ^ "Emit-XML". Windows PowerShell ブログ. Microsoft . 2008年10月17日. 2011年9月27日閲覧
  81. ^ 「V2 のブロックコメント」。Windows PowerShell ブログ。Microsoft 。 2008年6月14日。 2011年9月27日閲覧
  82. ^ Lee, Thomas (2012年8月13日). 「PowerShell バージョン 3 が RTM になりました!」Under The Stairs . 2012年8月13日閲覧
  83. ^ abc "Windows Management Framework 3.0".ダウンロードセンター. Microsoft . 2012年9月4日. 2012年11月8日閲覧
  84. ^ 「Windows Management Framework 3.0 Community Technology Preview (CTP) #2 がダウンロード可能になりました」。Windows PowerShell ブログ。Microsoft 2011年12月2日。
  85. ^ 「Windows Management Framework 3.0」。ダウンロードセンター。Microsoft 2012年12月3日。
  86. ^ Jofre, JuanPablo (2016年12月14日). 「Windows PowerShell システム要件」. Microsoft Developer Network . Microsoft . 2017年4月20日閲覧
  87. ^ Honeycutt, Jerry (2012). Woolley, Valerie (編). Windows 8 の紹介: IT プロフェッショナル向け概要. Redmond, WA: Microsoft Press . ISBN 978-0-7356-7050-1
  88. ^ 「Windows Management Framework 4.0 が利用可能になりました」。Microsoft 2013年10月24日. 2013年11月4日閲覧
  89. ^ Levy, Shay (2013年6月25日). 「Windows PowerShell 4.0の新機能」. PowerShell Magazine . 2013年6月26日閲覧
  90. ^ 「Windows Server 2012 R2 PowerShell の Desired State Configuration」。Channel 9。Microsoft 。 2013年6月3日。2013年12月26日時点のオリジナルよりアーカイブ。 2013年6月26日閲覧
  91. ^ Hall, Adrian (2013年6月7日). 「Microsoft TechEd North Americaからの考察」.ブログ: ヒントとコツ. Splunk . 2013年6月26日閲覧.
  92. ^ 「Windows Management Framework (WMF) 5.0 RTM パッケージが再公開されました」。Windows PowerShell ブログ。Microsoft 2016年2月24日。
  93. ^ 「Q and A」. GitHub . 2015年4月21日閲覧
  94. ^ Snover, Jeffrey (2014年4月3日). 「Windows Management Framework V5 Preview」. blogs.technet.com . Microsoft . 2014年6月30日時点のオリジナルよりアーカイブ2015年4月21日閲覧。
  95. ^ Jaap Brasser (2016年8月2日) 曰く、「#PSTip Windows 10 Anniversary Update の新しい PowerShell コマンド」。
  96. ^ 「Windows Server 2016 Standard Edition の新機能 パート9 – 管理と自動化」2016年9月4日。
  97. ^ 「Microsoft.PowerShell.LocalAccounts モジュール」。technet.microsoft.com。2016年6月16日。
  98. ^ 「Windows Management Framework (WMF) 5.1 Preview の発表」。2016年7月16日。
  99. ^ 「WMF 5.1」。Microsoftダウンロード センター
  100. ^ 「Windows PowerShellとは? - PowerShell」。Microsoft Learn . 2024年3月7日. 2024年8月19日閲覧
  101. ^ 「Windows PowerShell 5.1 から PowerShell 7 への移行 - PowerShell」. Microsoft Learn . 2024年4月2日. 2024年8月19日閲覧
  102. ^ Aiello, Joey (2018年1月11日). 「PowerShell Core 6.0: 一般公開 (GA) およびサポート開始!」. PowerShell チームブログ. Microsoft. 2018年6月11日時点のオリジナルよりアーカイブ。 2018年6月11日閲覧
  103. ^ Aiello, Joey; Wheeler, Sean (2018年1月10日). 「PowerShell Core サポートライフサイクル」. Microsoft Docs . Microsoft . 2018年11月16日時点のオリジナルよりアーカイブ2018年1月11日閲覧。
  104. ^ Calvo, Angel (2018年1月11日). 「移行すべき10の最もエキサイティングな理由」. PowerShell AMA . Microsoft .
  105. ^ sdwheeler (2023年8月3日). 「PowerShell Core 6.0 の新機能」. learn.microsoft.com . 2023年12月11日閲覧。New -ModuleManifestを除き、デフォルトのエンコードはBOMなしのUTF-8です。
  106. ^ 「VS Code および PowerShell でのファイルエンコーディングについて - PowerShell」. learn.microsoft.com . 2023年11月29日. 2023年12月11日閲覧
  107. ^ Aiello, Joey (2018年9月13日). 「PowerShell Core 6.1 の発表」. devblogs.microsoft.com . Microsoft . 2019年6月1日閲覧
  108. ^ “PowerShell/PowerShell”. GitHub . 2020年6月22日閲覧
  109. ^ abc Lee, Steve (2019年4月5日). 「PowerShellの次期リリース – PowerShell 7」. Microsoft . 2019年6月1日閲覧
  110. ^ Lee, Steve (2019年3月28日). 「PowerShell Core 6.2の一般提供」. devblogs.microsoft.com . Microsoft . 2019年6月1日閲覧
  111. ^ Mackie, Kurt (2019年5月30日). 「Microsoft、PowerShell 7 Previewをリリース」. 1105 Media Inc. 2019年6月1日閲覧
  112. ^ Lee, Steve (2019年5月30日). 「PowerShell 7 ロードマップ」. devblogs.microsoft.com . Microsoft . 2020年8月12日閲覧
  113. ^ “PowerShell 7 Preview 5 | PowerShell”. 2019年10月23日. 2020年2月15日時点のオリジナルよりアーカイブ2020年3月5日閲覧。
  114. ^ 「PowerShell 7.2はMicrosoftの次世代シェルの新バージョンです」。itsfoss.net 2021年11月12日。
  115. ^ “PowerShell v7.3.0 リリース · PowerShell/PowerShell”. GitHub . 2022年11月9日時点のオリジナルよりアーカイブ。 2022年3月7日閲覧
  116. ^ 「PowerShell v7.4.7 リリース · PowerShell/PowerShell」. GitHub . 2025年1月27日閲覧
  117. ^ sdwheeler (2025年1月23日). 「PowerShell 7.4 の新機能 - PowerShell」. learn.microsoft.com . 2025年1月27日閲覧
  118. ^ sdwheeler (2025年1月23日). 「PowerShell 7.5 の新機能 - PowerShell」. learn.microsoft.com . 2025年1月27日閲覧
  119. ^ 「PowerShell v7.5.0 リリース · PowerShell/PowerShell」. GitHub . 2025年1月27日閲覧
  120. ^ “PowerShell のリリース v7.6.0-preview.2 ・ PowerShell/PowerShell”. GitHub . 2025年1月27日閲覧
  121. ^ sdwheeler (2025年1月17日). 「PowerShell 7.6 の新機能 - PowerShell」. learn.microsoft.com . 2025年1月27日閲覧
  122. ^ “Tar and Curl Come to Windows! - Microsoft Tech Community - 382409”. 2019年3月22日. 2020年9月11日時点のオリジナルよりアーカイブ。 2020年5月17日閲覧
  123. ^ “Schtasks.exe”. 2023年3月12日. 2025年5月25日閲覧
  124. ^ Wheeler, Sean (2020年6月2日). 「スクリプトについて」. Microsoft Docs . Microsoft.
  125. ^ Wheeler, Sean; Smatlak, David; Wilson, Chase (2019年10月16日). 「PowerShellモジュールマニフェストの記述方法」. Docs . Microsoft.
  126. ^ Wheeler, Sean; Smatlak, David (2019年11月22日). 「PowerShell スクリプトモジュールの記述方法」. Microsoft Docs . Microsoft.
  127. ^ Wheeler, Sean; Jofre, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David (2020年6月2日). 「Types.ps1xmlについて」. Microsoft Docs . Microsoft.
  128. ^ Wheeler, Sean; Jofre, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David. 「エクスポートコンソール」. Microsoft Docs . Microsoft.
  129. ^ Wheeler, Sean (2020年6月2日). 「セッション構成ファイルについて」. Microsoft Docs . Microsoft.
  130. ^ Wheeler, Sean (2020年6月2日). 「New-PSRoleCapabilityFile」. Microsoft Docs . Microsoft.
  131. ^ 「Microsoft Transporter Suite for Lotus Domino」。Microsoft 2008年3月7日閲覧
  132. ^ 「PowerTools for Open XML」 。 2008年6月20日閲覧
  133. ^ 「MO74: WebSphere MQ – Windows PowerShell ライブラリ」 。 2007年12月5日閲覧
  134. ^ 「IoT Coreアドオンのコマンドラインオプション」。2018年10月15日。 2020年6月13日閲覧
  135. ^ 「Quest Software による Active Directory 用の PowerShell コマンド」 。20087 月 2 日閲覧
  136. ^ 「グループ ポリシーによる PowerShell リモート処理」 。200712 月 7 日閲覧
  137. ^ “VMware vSphere PowerCLI”. 2014年12月30日時点のオリジナルよりアーカイブ2014年9月9日閲覧。
  138. ^ 「IIS7 PowerShell Provider Tech Preview 2」。Windows PowerShell ブログ。2010年2月4日時点のオリジナルよりアーカイブ。 2008年7月3日閲覧
  139. ^ 「Win7 Diagnostics Team に感謝」 。20096 月 15 日閲覧
  140. ^ Michael, Niehaus (2009年7月10日). 「MDT 2010 の新機能 #16: PowerShell サポート」 . 2014年10月27日閲覧
  141. ^ 「Data ONTAP PowerShell ToolKit で NetApp を称賛」2010 年6 月 15 日閲覧
  142. ^ 「PowerShell Toolkit 4.2 発表」2016年6月23日. 2016年9月7日閲覧
  143. ^ 「PowerShell を使用した異機種ジョブ スケジューリング」 。20109 月 15 日閲覧
  144. ^ “UIAutomation PowerShell Extensions”. 2016年8月17日時点のオリジナルよりアーカイブ2012年2月16日閲覧。
  145. ^ 「EqualLogic HIT-ME with PowerShell」 。 2012年3月9日閲覧
  146. ^ de:LOGINventory
  147. ^ “Selenium PowerShell eXtensions”. 2013年1月19日時点のオリジナルよりアーカイブ2012年8月20日閲覧。

さらに読む

Retrieved from "https://en.wikipedia.org/w/index.php?title=PowerShell&oldid=1320935463"