Windows ターミナルでの PowerShell 7 セッションのスクリーンショット | |
| パラダイム | 命令型、パイプライン型、オブジェクト指向型、関数型、リフレクション型 |
|---|---|
| デザイン: | ジェフリー・スノーバー、ブルース・ペイエット、ジェームズ・トゥルーハー(他) |
| 開発者 | マイクロソフト |
| 初登場 | 2006年11月14日 |
| 安定リリース | 7.4.5 / 2024年8月20日[1] |
| タイピングの規律 | 強く、安全で、暗黙的で、ダイナミック |
| 実装言語 | C# |
| プラットフォーム | PowerShell: .NET Windows PowerShell: .NET フレームワーク |
| OS |
|
| ライセンス | MITライセンス[2](ただしWindowsコンポーネントはプロプライエタリのまま) |
| ファイル名拡張子 |
|
| Webサイト | マイクロソフト |
| 影響を受けた | |
| Python、Ksh、Perl、C#、CL、DCL、SQL、Tcl、Tk、[3] Chef、Puppet | |
PowerShellは、 Microsoftのタスク自動化および構成管理プログラムであり、コマンドラインシェルと関連するスクリプト言語で構成されています。当初はWindowsコンポーネントのみで、Windows PowerShellとして知られていましたが、2016年8月18日にPowerShell Coreが導入され、オープンソースかつクロスプラットフォームになりました。[4]前者は.NET Framework上に構築されており、後者は.NET(旧.NET Core)上に構築されています。
PowerShellは現在サポートされているすべてのWindowsバージョンにバンドルされており、MacOSとLinuxにもインストールできます。[4] Windows 10ビルド14971以降、PowerShellはコマンドプロンプト(cmd.exe)に取って代わり、ファイルエクスプローラーのデフォルトのコマンドシェルになりました。[5] [6]
PowerShell では、管理タスクは通常、特定の操作を実装する特殊な .NETクラスであるコマンドレット( command-letsと発音) を介して実行されます。これらは、プロバイダーを介して PowerShell で利用できるファイル システムやWindows レジストリなどのさまざまなデータ ストアのデータにアクセスすることによって機能します。サードパーティの開発者は、コマンドレットとプロバイダーを PowerShell に追加できます。[7] [8]コマンドレットはスクリプトによって使用される場合があり、スクリプトはモジュールにパッケージ化される場合があります。コマンドレットは .NET APIと連携して動作します。
PowerShell は.NET Remoting、WS-Management、CIM、およびSSHをサポートしているため、管理者はローカルとリモートの両方の Windows システムで管理タスクを実行できます。また、PowerShell は、PowerShell ランタイムを他のアプリケーション内に埋め込むためのホスティングAPI も提供します。これらのアプリケーションは、PowerShell 機能を使用して、グラフィカル インターフェイス経由で公開される操作を含む特定の操作を実装できます。この機能は、Microsoft Exchange Server 2007 で、管理機能を PowerShell コマンドレットおよびプロバイダーとして公開し、必要なコマンドレットを呼び出す PowerShell ホストとしてグラフィカル管理ツールを実装するために使用されています。 [7] [9] Microsoft SQL Server 2008などの他の Microsoft アプリケーションも、PowerShell コマンドレット経由で管理インターフェイスを公開しています。[10]
PowerShell には、コマンドレットを介してアクセスできる独自の広範なコンソールベースのヘルプ ( Unix シェルのマニュアル ページに類似)が含まれています。更新されたローカル ヘルプ コンテンツは、コマンドレットを介してインターネットから取得できます。または、スイッチを介して Web からヘルプをケースバイケースで取得することもできます。
Get-HelpUpdate-Help-onlineGet-Help
背景
コマンドライン インタープリタ(CLI) は、ほとんどの Microsoftオペレーティング システムにとって切り離せない部分です。MS -DOSとXenix は、ほぼ独占的に CLI に依存していました (ただし、MS-DOS 5には補完的なグラフィカルDOS シェルも付属していました)。Windows 9x ファミリには、MS-DOS のコマンドライン環境であるCOMMAND.COMがバンドルされていました。一方、 Windows NTおよびWindows CEファミリには、COMMAND.COM と非常によく似た新しいcmd.exeが付属していました。どちらの環境も、いくつかの基本的な内部コマンドとプリミティブなスクリプト言語 (バッチ ファイル) をサポートしており、これらを使用してさまざまなタスクを自動化できます。ただし、操作のコマンドライン相当が限られており、スクリプト言語が初歩的なため、Windowsグラフィカル ユーザー インターフェイス(GUI) のすべての側面を自動化することはできません。
マイクロソフトは、1998 年にWindows 98でWindows Script Hostとそのコマンドライン ベースのホストを導入することで、これらの欠点のいくつかに対処しようとしました。これはActive Scriptエンジンと統合されており、コンポーネント オブジェクト モデル ( COM ) を介してアプリケーションによって公開されるAPIを活用して、JScriptやVBScriptなどの互換性のある言語でスクリプトを記述できます。その欠点は、ドキュメントがあまりアクセスできないことと、いくつかの有名なコンピュータ ウイルスがセキュリティ対策の弱点を悪用した後、システムの脆弱性ベクトルとしての評判が急速に高まったことです。Windows のさまざまなバージョンでは、独自のコマンド セットを備えたさまざまな専用コマンドライン インタープリタ ( netshやWMICなど) が提供されていましたが、相互運用性はありませんでした。Windows Server 2003 では、コマンドライン エクスペリエンスをさらに改善しようとしましたが、スクリプトのサポートはまだ不十分でした。[11]cscript.exe
カーミット
1990年代後半までに、インテルはマイクロソフトに、インテルCPU上で動作するWindowsを、将来のインテルCPUの開発をサポートするのにより適切なプラットフォームにするための支援を求めていた。当時、インテルCPUの開発は、RISCアーキテクチャCPU上でSolaris(Unixの派生版)を実行するサン・マイクロシステムズのコンピュータで行われていた。インテルの多くのKornShell自動化スクリプトをWindows上で実行する機能は、重要な機能であると認識されていた。マイクロソフトは社内で、コード名KermitのKornShellのWindowsポートを作成する取り組みを開始した。[12]インテルは最終的に、インテルCPU上で実行できるLinuxベースの開発プラットフォームに方向転換し、Kermitプロジェクトは不要になった。しかし、資金が十分にあったチームにより、マイクロソフトのプログラムマネージャのジェフリー・スノーバーは、マイクロソフトの管理自動化の問題に対するより汎用的なソリューションを作成する機会があることに気付いた。
モナド
2002年までに、マイクロソフトはコマンドライン管理への新しいアプローチの開発を開始し、その中にはモナド(Microsoft ShellまたはMSHとも呼ばれる)と呼ばれるCLIも含まれていました。その背後にあるアイデアは、チーフアーキテクトのジェフリー・スノーバーによって2002年8月に「モナド宣言」と呼ばれるホワイトペーパーで公開されました。[13] 2017年のインタビューで、スノーバーはPowerShellの起源について説明し、WindowsでUnixツールを利用できるようにしようとしていたが、「 WindowsとLinuxのコアアーキテクチャの違い」のためにうまくいかなかったと述べています。具体的には、Linuxはすべてをテキストファイルと見なしますが、Windowsはすべてを「構造化データを返すAPI」と見なしていることを指摘しました。それらは根本的に互換性がなかったため、彼は別のアプローチを取ることになりました。[14]
Monad は、一連のコア管理タスクを自動化できる斬新な設計の、新しい拡張可能な CLI となるはずでした。Microsoft は、2003 年 10 月にロサンゼルスで開催された Professional Development Conference で初めて Monad を公開しました。数か月後、同社はプライベート ベータ版を公開し、最終的にパブリック ベータ版がリリースされました。Microsoft は、2005 年 6 月 17 日に最初の Monad パブリックベータ版をリリースし、2005 年 9 月 11 日にベータ 2、2006 年 1 月 10 日にベータ 3 をリリースしました。
パワーシェル

2006年4月25日、最初のMonadの発表から間もなく、MicrosoftはMonadをWindows PowerShellに改名し、同社の管理技術製品の重要な一部として位置付けると発表しました。[15] PowerShellのリリース候補版(RC)1も同時にリリースされました。名前の変更とRCの両方の重要な点は、これが単なるアドオンではなく、Windowsのコンポーネントになったことです。
PowerShellバージョン1のリリース候補2は2006年9月26日にリリースされ、2006年11月14日にWebに最終リリースされました。以前のバージョンのWindows用のPowerShellは2007年1月30日にリリースされました。 [16] PowerShell v2.0の開発はPowerShell v1.0が出荷される前に始まりました。開発中に、Microsoftは3つのコミュニティテクノロジプレビュー(CTP)を出荷しました。Microsoftはこれらのリリースを一般に公開しました。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 ビットの両方のプラットフォームでダウンロードできます。[17] 2009 年 10 月のTechNet Magazine号で、Microsoft は PowerShell の熟練度を「今後数年間でWindows管理者に必要となる最も重要なスキル」と呼んでいます。 [18]
Windows 10にはPowerShell用のスクリプト検証スイートであるPesterが同梱されていました。[19]

2016年8月18日、マイクロソフトはPowerShellをオープンソース化し、Windows、macOS、CentOS、Ubuntuをサポートするクロスプラットフォームにしたと発表しました[20]。[4]ソースコードはGitHubで公開されました。[21]オープンソースへの移行により、「PowerShell Core」と呼ばれるPowerShellの2番目のバージョンが作成されました。これは.NET Coreで実行されます。これは、完全な.NET Frameworkで実行される「Windows PowerShell」とは異なります。[22]バージョン5.1以降、PowerShell CoreはWindows Server 2016 Nano Serverにバンドルされています。[23] [24]
デザイン
PowerShell の重要な設計戦略は、Windows、Windows Management Instrumentation、.NET Framework、およびその他のソフトウェアに既に存在する多数のAPI を活用することでした。PowerShell コマンドレットは、既存の機能を「ラップアラウンド」します。この戦略の目的は、管理者と幅広い基礎機能との間に、管理者にとって使いやすく、より一貫性のあるインターフェイスを提供することです。PowerShell を使用すると、管理者は .NET、WMI、または低レベルの API コーディングを知る必要がなく、PowerShell によって公開されるコマンドレットの使用に集中できます。この点で、PowerShell は新しい機能をほとんど作成せず、既存の機能を特定のユーザーにとってよりアクセスしやすいものにすることに重点を置いています。[25]
文法
PowerShellの開発者は、ツールのコア文法をPOSIX 1003.2 KornShellの文法に基づいて設計しました。[26]
しかし、PowerShellの言語はPHP、Perl、その他多くの既存言語の影響も受けています。 [27]
名前付きコマンド
Windows PowerShellは4種類の名前付きコマンドを実行できます。[28]
- コマンドレット( PowerShell と対話するように設計された.NET Frameworkプログラム)
- PowerShell スクリプト (末尾に が付くファイル
.ps1) - PowerShell 関数
- スタンドアロン実行可能プログラム
コマンドがスタンドアロン実行可能プログラムの場合、PowerShell はそれを別のプロセスで起動します。コマンドレットの場合は、PowerShell プロセスで実行されます。PowerShell は対話型のコマンドライン インターフェイスを提供し、そこでコマンドを入力してその出力を表示できます。ユーザー インターフェイスでは、カスタマイズ可能なタブ補完が提供されます。PowerShell では、コマンドレットのエイリアスを作成できます。エイリアスは、PowerShell によって元のコマンドの呼び出しにテキスト変換されます。PowerShell は、コマンドの名前付きパラメーターと位置パラメーターの両方をサポートしています。コマンドレットを実行する際、引数値をパラメーターにバインドする作業は PowerShell 自体によって行われますが、外部実行可能ファイルの場合、引数は PowerShell の解釈とは関係なく、外部実行可能ファイルによって解析されます。[29]
拡張型システム
PowerShell拡張型システム( ETS ) は .NET 型システムに基づいていますが、拡張セマンティクス (propertySets やサードパーティの拡張性など) を備えています。たとえば、データ フィールド、プロパティ、メソッドのサブセットのみを公開し、カスタム書式設定や並べ替え動作を指定することによって、オブジェクトのさまざまなビューを作成できます。これらのビューは、XMLベースの構成ファイルを使用して元のオブジェクトにマッピングされます。[30]
コマンドレット
コマンドレットは、特定の機能を実装する PowerShell 環境の特殊なコマンドです。これらは PowerShell スタックのネイティブ コマンドです。コマンドレットは、Get-ChildItemなどの動詞-名詞の命名パターンに従っており、自己文書化コードになっています。[31]コマンドレットは結果をオブジェクトとして出力し、入力としてオブジェクトを受け取ることもできるため、パイプラインの受信者として使用できます。コマンドレットが複数のオブジェクトを出力する場合、コレクション内の各オブジェクトは、次のオブジェクトが処理される前にパイプライン全体に渡されます。[31]
コマンドレットは特殊な .NETクラスで、PowerShellランタイムが実行時にインスタンス化して呼び出します。コマンドレットは またはCmdletから派生しPSCmdlet、後者はコマンドレットが PowerShell ランタイムと対話する必要がある場合に使用されます。[31]BeginProcessing()これらの基本クラスは、、、ProcessRecord()という特定のメソッドを指定します。これらのEndProcessing()メソッドは、コマンドレットの実装によってオーバーライドされて機能を提供します。コマンドレットが実行されるたびに、PowerShell はこれらのメソッドを順番に呼び出し、ProcessRecord()パイプライン入力を受け取った場合は が呼び出されます。[32]オブジェクトのコレクションがパイプされている場合、コレクション内の各オブジェクトに対して メソッドが呼び出されます。コマンドレットを実装するクラスには、コマンドレットの名前を構成する動詞と名詞を指定する 1 つの .NET 属性が必要です。一般的な動詞は列挙型CmdletAttributeとして提供されます。[33] [34]
コマンドレットがパイプライン入力またはコマンドラインパラメータ入力のいずれかを受け取る場合、ミューテーター実装を持つクラス内に対応するプロパティが必要です。PowerShell は、ミューテーター実装によってクラス変数に保存されたパラメータ値またはパイプライン入力を使用してミューテーターを呼び出します。これらの値は、機能を実装するメソッドによって参照されます。コマンドラインパラメータにマップされるプロパティは[35]でマークされ、 の呼び出し前に設定されます。パイプライン入力にマップされるプロパティも で囲まれますが、属性パラメータが設定されています。[36]ParameterAttributeBeginProcessing()ParameterAttributeValueFromPipeline
これらのコマンドレット クラスの実装は、任意の.NET APIを参照でき、任意の.NET 言語で記述できます。さらに、PowerShell では、パイプラインへの結果オブジェクトの書き込みなど、PowerShell 固有の機能にアクセスするために使用される などの特定の API が使用可能になります。コマンドレットは、.NET データ アクセスAPI をWriteObject()直接使用することも、PowerShellプロバイダーの PowerShell インフラストラクチャを使用することもできます。PowerShell プロバイダーは、一意のパスを使用してデータ ストアをアドレス指定できるようにします。データ ストアはドライブ文字を使用して公開され、その中の階層はディレクトリとしてアドレス指定されます。Windows PowerShell には、ファイル システム、レジストリ、証明書ストアのプロバイダーのほか、コマンド エイリアス、変数、関数の名前空間が付属しています。 [37] Windows PowerShell には、ファイル システムなどのさまざまなWindowsシステムを管理したり、Windows Management Instrumentation を使用してWindows コンポーネントを制御したりするためのさまざまなコマンドレットも含まれています。他のアプリケーションは、コマンドレットを PowerShell に登録して PowerShell で管理できるようにすることができます。また、コマンドレットがデータストア (データベースなど) を囲んでいる場合は、特定のプロバイダーを追加することもできます。[要出典]
ベース PowerShell インストールに含まれるコマンドレットの数は、通常、バージョンごとに増加しています。
コマンドレットは、スナップイン (v2 では非推奨) およびモジュールを通じてシェルに追加できます。ユーザーは、基本 PowerShell インストールに含まれるコマンドレットに限定されません。
パイプライン
PowerShell はパイプラインの概念を実装しており、これにより、あるコマンドレットの出力を別のコマンドレットに入力としてパイプすることができます。 Unix パイプラインと同様に、PowerShell パイプラインは、演算子を使用して|ステージを接続し、複雑なコマンドを構築できます。 ただし、PowerShell パイプラインは、ステージがオペレーティング システムによって調整される一連のプロセスとしてではなく、PowerShell ランタイム内で実行されるという点で、Unixパイプラインとは異なります。 さらに、バイト ストリームではなく、構造化された .NET オブジェクトが、ステージから次のステージに渡されます。オブジェクトを使用して PowerShell ランタイム内でステージを実行すると、データ構造をシリアル化したり、テキスト出力を明示的に解析して抽出したりする必要がなくなります。 [42]オブジェクトは、含まれているデータに対して機能する特定の関数をカプセル化することもでき、受信側コマンドで使用できるようになります。[43] [44]パイプラインの最後のコマンドレットでは、PowerShell は出力オブジェクトを自動的にコマンドレットにパイプし、コマンドレットはオブジェクトをフォーマット オブジェクトのストリームに変換してから、それらを画面にレンダリングします。[45] [46]Out-Default
すべての PowerShell オブジェクトは .NET オブジェクトであるため、.ToString()オブジェクト内のデータのテキスト表現を取得するメソッドを共有しています。さらに、PowerShell では書式定義を指定できるため、表示するデータ要素とその方法を選択して、オブジェクトのテキスト表現をカスタマイズできます。ただし、下位互換性を維持するために、外部実行可能ファイルをパイプラインで使用する場合は、PowerShell 型システムと直接統合するのではなく、オブジェクトを表すテキスト ストリームを受け取ります。[47] [48] [49]
スクリプト
Windows PowerShell には、コマンドレットを使用して命令的に複雑な操作を実装できる動的型付け スクリプト言語が含まれています。スクリプト言語は、変数、関数、分岐 ( )、ループ ( 、、、)、構造化エラー/例外処理、クロージャ/ラムダ式、[50]および .NET との統合をサポートしています。PowerShell スクリプト内の変数には というプレフィックスが付きます。変数には、コマンドレットの出力を含め、任意の値を割り当てることができます。文字列は、一重引用符または二重引用符で囲むことができます。二重引用符を使用すると、変数は引用符内であっても展開されます。ファイルへのパスをドル記号の後に中括弧で囲むと ( のように)、ファイルの内容への参照が作成されます。L値として使用された場合、それに割り当てられたものはすべてファイルに書き込まれます。R値として使用された場合、ファイルの内容が読み取られます。オブジェクトが割り当てられた場合は、保存される前にシリアル化されます。[引用が必要]if-then-elsewhiledoforforeach$${C:\foo.txt}
.オブジェクトのメンバーには、C# 構文のような表記法を使用してアクセスできます。PowerShell には$args、コマンドラインから関数に渡されるすべてのコマンドライン引数の配列である や、$_パイプライン内の現在のオブジェクトを参照するなどの特別な変数があります。 [51] PowerShell には、配列と連想配列も用意されています。PowerShell スクリプト言語は、コマンドラインに入力された算術式を即座に評価し、GB、MB、KB などの一般的な略語を解析します。[52] [53]
PowerShellでは、キーワードを使用してfunction関数を作成することができます。単純な関数の一般的な外観は次のようになります。[54]
関数 名 ( [Type] $Param1 , [Type] $Param2 ) {
# 命令
}
しかし、PowerShellでは、名前付きパラメータ、位置パラメータ、スイッチパラメータ、動的パラメータをサポートする高度な関数を使用できます。[54]
機能 動詞-名詞 {
パラメータ (
# 静的パラメータの定義
)
動的パラメータ {
# 動的パラメータの定義
}
始める {
# パイプラインの開始時に実行する命令のセット
}
プロセス {
# パイプライン内の各項目に対して実行されるメイン命令セット
}
終わり {
# パイプラインの最後に実行する命令のセット
}
}
定義された関数は、次のいずれかの形式で呼び出されます。[54]
名前 値1 値2
動詞-名詞 - パラメータ1 値1 -パラメータ 2 値2
[]PowerShellでは、括弧( )で囲んだ名前空間を指定し、コロン( )のペアを使用して::静的メソッドを示すことで、
任意の静的.NETメソッドを呼び出すことができます。 [55]たとえば、次のようになります。
[コンソール] :: WriteLine ( "PowerShell" )
PowerShellでオブジェクトを作成する方法は数十通りあります。一度作成すると、表記法を使用してオブジェクトのプロパティとインスタンスメソッドにアクセスできます.。[55]
PowerShellは、生の文字列とエスケープされた文字列の両方を受け入れます。一重引用符で囲まれた文字列は生の文字列であり、二重引用符で囲まれた文字列はエスケープされた文字列です。PowerShellは、直線引用符と波引用符を同等に扱います。[56]
PowerShellでは以下の特殊文字がサポートされています: [57]
エラー処理のために、PowerShell は .NET ベースの例外処理メカニズムを提供します。エラーが発生した場合、エラーに関する情報を含むオブジェクト (Exceptionオブジェクト) がスローされ、コンストラクトを使用してキャッチされますtry ... catch(コンストラクトtrapもサポートされています)。PowerShell は、例外を実際にスローせずに、実行をサイレントに再開するように構成できます。これは、単一のコマンド、単一のセッション、または永続的に実行できます。[58]
PowerShell を使用して記述されたスクリプトは.ps1、ファイルまたは.psm1ファイル (後者はモジュールを実装するために使用されます) のいずれかでセッションをまたいで保持できます。後で、スクリプト全体またはスクリプト内の個々の関数を使用できます。スクリプトと関数は、パイプライン内のコマンドとして使用でき、パラメーターをバインドできるという点で、コマンドレットと同様に動作します。パイプライン オブジェクトは、関数、スクリプト、およびコマンドレット間でシームレスに渡すことができます。スクリプトが意図せず実行されるのを防ぐため、スクリプトの実行は既定で無効になっており、明示的に有効にする必要があります。[59]スクリプトの有効化は、システム、ユーザー、またはセッション レベルで実行できます。PowerShell スクリプトは、整合性を確認するために署名することができ、コード アクセス セキュリティの対象となります。[60]
PowerShellスクリプト言語は、Cファミリーの多くのプログラミング言語でサポートされている科学的記法に似たバイナリプレフィックス記法をサポートしています。 [61]
ホスティング
PowerShell を管理アプリケーションに組み込むこともできます。このアプリケーションでは、PowerShell ランタイムを使用して管理機能を実装します。このために、PowerShell はマネージドホスティングAPIを提供します。API を介して、アプリケーションは実行空間(PowerShell ランタイムの 1 つのインスタンス化)をインスタンス化できます。実行空間はアプリケーションのプロセスで実行され、オブジェクトとして公開されます。 [7]実行空間の状態はオブジェクトに格納されます。実行空間が作成されると、Windows PowerShell ランタイムはインスタンス化を初期化し、プロバイダーの初期化やコマンドレットの列挙などを行い、それに応じてオブジェクトを更新します。その後、実行空間を同期処理または非同期処理用に開く必要があります。その後、実行空間を使用してコマンドを実行できます。[引用が必要]RunspaceSessionStateSessionState
コマンドを実行するには、パイプライン (Pipelineオブジェクトで表される) を作成し、実行空間に関連付ける必要があります。パイプライン オブジェクトには、パイプラインを構成するコマンドレットが設定されます。順次操作 (PowerShell スクリプトなど) の場合、各ステートメントに対して Pipeline オブジェクトが作成され、別の Pipeline オブジェクト内にネストされます。[7]パイプラインが作成されると、Windows PowerShell はパイプライン プロセッサを呼び出します。パイプライン プロセッサは、コマンドレットをそれぞれのアセンブリ(コマンド プロセッサ) に解決し、それらへの参照をパイプラインに追加して、パイプラインとの接続を表すためにInputPipe、、OutputPipeおよびErrorOutputPipeオブジェクトに関連付けます。型は検証され、パラメーターはリフレクションを使用してバインドされます。[7]パイプラインが設定されると、ホストはInvoke()コマンドを実行するメソッド、またはその非同期の同等のメソッドを呼び出しますInvokeAsync()。パイプラインの最後にコマンドレットがある場合はWrite-Host、結果がコンソール画面に書き込まれます。ない場合は、結果がホストに渡され、ホストはさらに処理を適用するか、出力自体を表示します。[引用が必要]
Microsoft Exchange Server 2007 は、ホスティング API を使用して管理 GUI を提供します。GUI で公開される各操作は、一連の PowerShell コマンド (またはパイプライン) にマップされます。ホストはパイプラインを作成し、それを実行します。実際、対話型 PowerShell コンソール自体が PowerShell ホストであり、コマンド ラインで入力されたスクリプトを解釈しPipeline、必要なオブジェクトを作成して呼び出します。[引用が必要]
望ましい状態構成
DSCはソフトウェア環境をどのように構成すべきかを宣言的に指定することを可能にする。[62]
構成を実行すると、DSC はシステムが構成で記述された状態を取得するようにします。DSC 構成はべき等です。ローカル構成マネージャー(LCM) は、リソース(DSC の必須部分)によって記述された制御フローを使用してシステムを定期的にポーリングし、構成の状態が維持されていることを確認します。
バージョン
PowerShell は当初「Monad」というコード名を使用していましたが、2003 年 10 月にロサンゼルスで開催された Professional Developers Conference で初めて公開されました。すべてのメジャー リリースは現在もサポートされており、各メジャー リリースには以前のバージョンとの下位互換性が備わっています。
Windows PowerShell 1.0

PowerShell 1.0は、2006年11月にWindows XP SP2、Windows Server 2003 SP1、Windows Vista向けにリリースされました。[63]これは、Windows Server 2008のオプションコンポーネントです。
Windows PowerShell 2.0

PowerShell 2.0はWindows 7およびWindows Server 2008 R2に統合されており[64] 、 Windows XP Service Pack 3、Windows Server 2003 Service Pack 2、Windows Vista Service Pack 1向けにリリースされています。[65] [66]
PowerShell v2には、スクリプト言語とホスティングAPIの変更に加えて、240以上の新しいコマンドレットが含まれています。[67] [68]
PowerShell 2.0の新機能は次のとおりです: [69] [70] [71]
- PowerShell リモート処理: WS-Managementを使用すると、PowerShell 2.0 では、リモート マシンまたは多数のリモート マシンでスクリプトやコマンドレットを呼び出すことができます。
- バックグラウンド ジョブ: PSJobとも呼ばれ、コマンド シーケンス (スクリプト) またはパイプラインを非同期的に呼び出すことができます。ジョブは、ローカル マシンまたは複数のリモート マシンで実行できます。PSJob 内の対話型コマンドレットは、ユーザー入力が提供されるまでジョブの実行をブロックします。
- トランザクション: コマンドレットを有効にすると、開発者はトランザクション操作を実行できます。PowerShell 2.0 には、 PSTransactionを開始、コミット、およびロールバックするためのトランザクション コマンドレットのほか、トランザクションを管理して参加コマンドレットおよびプロバイダー操作に転送する機能が含まれています。PowerShell レジストリ プロバイダーはトランザクションをサポートします。
- 高度な機能: これらはPowerShellスクリプト言語を使用して記述されたコマンドレットです。当初は「スクリプトコマンドレット」と呼ばれていましたが、後に「高度な機能」に名前が変更されました。[72]
- SteppablePipelines : これにより、ユーザーはコマンドレットの
BeginProcessing()、ProcessRecord()およびEndProcessing()関数がいつ呼び出されるか制御できます。 - モジュール: これにより、スクリプト開発者と管理者は PowerShell スクリプトを自己完結型の再利用可能なユニットに整理および分割できます。モジュールのコードは、独自の自己完結型コンテキストで実行され、モジュール外部の状態には影響しません。モジュールは、スクリプトを使用して制限された実行空間環境を定義できます。モジュールには、永続的な状態と、パブリック メンバーおよびプライベート メンバーがあります。
- データ言語: PowerShell スクリプト言語のドメイン固有のサブセット。これにより、データ定義をスクリプトから分離し、実行時にローカライズされた文字列リソースをスクリプトにインポートできるようになります (スクリプトの国際化)。
- スクリプト デバッグ: PowerShell スクリプトまたは関数にブレークポイントを設定できます。ブレークポイントは、行、行と列、コマンド、および変数の読み取りまたは書き込みアクセスに設定できます。スクリプト経由でブレークポイントを制御するための一連のコマンドレットが含まれています。
- イベント: この機能を使用すると、管理イベントとシステム イベントをリッスン、転送、および処理できます。イベントを使用すると、PowerShell ホストは管理対象エンティティの状態変更について通知を受けることができます。また、PowerShell スクリプトはObjectEvents、PSEvents、およびWmiEventsをサブスクライブし、それらを同期的および非同期的に処理することもできます。
- Windows PowerShell 統合スクリプト環境 (ISE) : PowerShell 2.0 には、統合デバッガー、構文の強調表示、タブ補完、タブ付き UI で最大 8 つの PowerShell Unicode 対応コンソール (実行スペース)を提供する GUI ベースの PowerShell ホストと、スクリプト内の選択した部分のみを実行する機能が含まれています。
- ネットワークファイル転送:バックグラウンドインテリジェント転送サービス(BITS)を使用して、マシン間での優先順位付け、スロットル、非同期のファイル転送をネイティブにサポートします。[73]
- 新しいコマンドレット: ISE がインストールされ有効になっている場合、システムで許可されていれば、WPF GridView
Out-GridViewオブジェクトに表形式のデータを表示するが含まれます。 - 新しい演算子:
-Split、、-Joinおよび Splatting (@) 演算子。 - Try-Catch-Finally による例外処理: 他の .NET 言語とは異なり、単一の catch ブロックに対して複数の例外タイプが許可されます。
- ネスト可能なHere-Strings : PowerShellのHere-Stringsが改良され、ネストできるようになりました。[74]
- ブロックコメント
<#: PowerShell 2.0は、区切り文字としておよびを使用したブロックコメントをサポートしています#>。[75] - 新しい API : 新しい API は、PowerShell パーサーとランタイムのホストへの制御の強化から、Runspaces () のコレクションの作成と管理、 PowerShell の構成済みサブセットのみの呼び出しを許可する制限付き Runspaces
RunspacePoolsの作成機能まで多岐にわたります。新しい API は、PowerShell によって管理されるトランザクションへの参加もサポートします。
Windows PowerShell 3.0
PowerShell 3.0はWindows 8およびWindows Server 2012に統合されています。MicrosoftはPowerShell 3.0をWindows 7 Service Pack 1、Windows Server 2008 Service Pack 1、Windows Server 2008 R2 Service Pack 1でも利用できるようにしました。[76] [77]
PowerShell 3.0 は、より大きなパッケージである Windows Management Framework 3.0 (WMF3) の一部であり、リモート処理をサポートするWinRMサービスも含まれています。 [77] Microsoft は、WMF3 のコミュニティ テクノロジプレビューを数回リリースしました。Windows Management Framework 3.0 の初期のコミュニティ テクノロジ プレビュー 2 (CTP 2) バージョンは、2011 年 12 月 2 日にリリースされました。 [78] Windows Management Framework 3.0 は、2012 年 12 月に一般提供が開始され、 [79] Windows 8 および Windows Server 2012 にデフォルトで含まれています。[80]
PowerShell 3.0の新機能は以下のとおりです。[77] [81] : 33–34
- スケジュールされたジョブ: Windows タスク スケジューラインフラストラクチャを使用して、ジョブを事前に設定された日時に実行するようにスケジュールできます。
- セッション接続: セッションを切断して再接続できます。リモート セッションは一時的なネットワーク障害に対してより耐性を持つようになりました。
- コード記述の改善:コード補完(IntelliSense) とスニペットが追加されました。PowerShell ISE では、ユーザーはダイアログ ボックスを使用して PowerShell コマンドレットのパラメーターを入力できます。
- 委任のサポート: 管理タスクは、その種類のタスクに対する権限を持たないユーザーに、永続的な追加権限を付与することなく委任できます。
- ヘルプの更新: ヘルプ ドキュメントは Update-Help コマンドを使用して更新できます。
- 自動モジュール検出: モジュールからのコマンドが呼び出されるたびに、モジュールが暗黙的にロードされます。コード補完は、ロードされていないモジュールでも機能します。
- 新しいコマンド
get-WmiObject win32_logicaldisk:以前は WMI 経由で実行されていたディスク、ボリューム、ファイアウォール、ネットワーク接続、プリンターを管理する機能を含む、数十の新しいモジュールが追加されました。 [詳細な説明が必要]
Windows PowerShell 4.0
PowerShell 4.0はWindows 8.1およびWindows Server 2012 R2に統合されています。MicrosoftはPowerShell 4.0をWindows 7 SP1、Windows Server 2008 R2 SP1、Windows Server 2012でも利用できるようにしています。[82]
PowerShell 4.0 の新機能は次のとおりです。
- 望ましい状態構成: [83] [84] [85] DMTF管理標準とWS-Managementプロトコルを使用するシステムの構成データの展開と管理を可能にする宣言型言語拡張とツール
- 新しいデフォルトの実行ポリシー: Windows サーバーでは、デフォルトの実行ポリシーは になりました
RemoteSigned。 - Save-Help : リモート コンピューターにインストールされているモジュールのヘルプを保存できるようになりました。
- 強化されたデバッグ:デバッガーは、ワークフローのデバッグ、リモート スクリプトの実行、PowerShell セッションの再接続にわたるデバッグ セッションの保持をサポートするようになりました。
- -PipelineVariable スイッチ: 現在のパイプライン オブジェクトをプログラミング目的で変数として公開する新しいユビキタス パラメーター
- 物理およびHyper-Vの仮想ネットワーク スイッチを管理するためのネットワーク診断
- Where および ForEachメソッド構文は、オブジェクトをフィルタリングおよび反復処理する代替方法を提供します。
Windows PowerShell 5.0

PowerShell 5.0を含むWindows Management Framework (WMF) 5.0 RTMは、重大なバグを含む最初のリリースの後、2016年2月24日にWebに再リリースされました。[86]
主な機能は次のとおりです:
- オブジェクト指向プログラミング用のクラスを作成する新しい
classキーワード - 列挙型を
enum作成する新しいキーワード OneGetChocolatey パッケージマネージャーをサポートするコマンドレット[87]- スイッチ管理のサポートをレイヤー2ネットワークスイッチに拡張します。[88]
- PowerShell バックグラウンド ジョブと他のプロセスでホストされている PowerShell インスタンス (それぞれ「実行空間」と呼ばれます) のデバッグ
- Desired State Configuration (DSC) ローカル構成マネージャー (LCM) バージョン 2.0
- DSC 部分構成
- DSC ローカル構成マネージャーのメタ構成
- PowerShell クラスを使用した DSC リソースの作成
Windows PowerShell 5.1
これは、2016年8月2日にWindows 10 Anniversary Update [89]とともにリリースされ、Windows Server 2016でもリリースされました。[90] PackageManagementはプロキシをサポートし、PSReadLineはViModeをサポートし、2つの新しいコマンドレットGet-TimeZoneとSet-TimeZoneが追加されました。LocalAccountsモジュールを使用すると、ローカルユーザーアカウントの追加/削除が可能になります。[91] PowerShell 5.1のプレビューは、2016年7月16日にWindows 7、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012、Windows Server 2012 R2向けにリリースされ、[92] 2017年1月19日にリリースされました。[93]
PowerShell 5.1 は、「Desktop」と「Core」の 2 つのエディションで提供される最初のバージョンです。「Desktop」エディションは、.NET Framework スタックで実行される従来の Windows PowerShell の継続版です。「Core」エディションは .NET Core で実行され、Windows Server 2016 Nano Server にバンドルされています。フットプリントが小さい代わりに、後者にはクリップボードを管理したり、コンピューターをドメインに参加させるコマンドレット、WMI バージョン 1 コマンドレット、イベント ログ コマンドレット、プロファイルなどの一部の機能が欠けています。[24]これは、Windows 専用に作成された PowerShell の最終バージョンでした。Windows PowerShell 5.1 は、Windows 10、Windows 11、Windows Server 2022 にプリインストールされたままですが、.NET PowerShell は別途インストールする必要があり、Windows PowerShell と並行して実行できます。[94] [95]
PowerShell コア 6
PowerShell Core 6.0 は、2016 年 8 月 18 日に初めて発表されました。このとき、Microsoft は PowerShell Core と、この製品をWindows から独立したクロスプラットフォーム、無料、オープンソースにすることを発表したのです。[4] 2018 年 1 月 10 日に Windows、macOS、Linux向けに一般提供が開始されました。[96]独自のサポート ライフサイクルがあり、Windows 10 で導入された Microsoft のライフサイクル ポリシーに準拠しています。PowerShell Core の最新バージョンのみがサポートされます。Microsoft は、PowerShell Core 6.0 のマイナー バージョンを 6 か月ごとに 1 つリリースする予定です。[97]
PowerShell のこのバージョンで最も重要な変更点は、他のプラットフォームへの拡張です。Windows 管理者にとって、このバージョンの PowerShell には大きな新機能は含まれていませんでした。2018 年 1 月 11 日のコミュニティとのインタビューで、PowerShell チームは、Windows PowerShell 5.1 から PowerShell Core 6.0 に移行する Windows IT プロフェッショナルにとって最もエキサイティングなことのトップ 10 を挙げるように求められました。これに対して、Microsoft の Angel Calvo は、クロスプラットフォームとオープンソースの 2 つしか挙げることができませんでした。[98] PowerShell 6では、いくつかの例外を除き、既定のエンコードがUTF-8に変更されました。 [99] (PowerShell 7.4 では、UTF-8 への変更がさらに増加しています) [100]
6.1
Microsoftによると、PowerShell 6.1の新機能の1つは「Windows 10およびWindows Server 2019の1900以上の既存のコマンドレットとの互換性」です。[101]ただし、これらのコマンドレットの詳細は、変更ログの完全版には記載されていません。[102] Microsoftは後に、PowerShell CoreがWindows PowerShell 5.1を置き換えることができず、Windowsで普及しなかったため、この数は不十分であると主張しました。[103]ただし、Linuxでは人気がありました。[103]
6.2
PowerShell Core 6.2は、主にパフォーマンスの向上、バグ修正、開発者の生産性を向上させる小さなコマンドレットと言語の機能強化に重点を置いています。[104]
PowerShell 7
PowerShell 7は、PowerShell Core 6.x製品と、サポートされている最後のWindows PowerShellバージョンであるWindows PowerShell 5.1の代替品です。[105] [103]開発の焦点は、PowerShell 7をWindows PowerShell 5.1の実行可能な代替品にすること、つまり、Windowsに同梱されているモジュールとの互換性の点でWindows PowerShellとほぼ同等にすることでした。[106]
PowerShell 7の新機能は次のとおりです。[107]
- 並列処理の処理を支援するコマンドレット
-ParallelのスイッチForEach-Object - 組み込みの Windows モジュールとの互換性に関しては、Windows PowerShell とほぼ同等です。
- 新しいエラービュー
- コマンド
Get-Errorレット - パイプラインのチェーン演算子 (
&&および||) を使用すると、パイプライン内の次のコマンドレットを条件付きで実行できます。 - 三項演算のための? :演算子
- ヌル
??合体演算子 - null合体
??=代入演算子 - クロスプラットフォーム
Invoke-DscResource(実験的) Out-GridViewコマンドレットの復活-ShowWindowスイッチの返却Get-Help
PowerShell 7.2
PowerShell 7.2 は、PowerShell バージョン 7.0 に続く、PowerShell の次の長期サポート バージョンです。.NET 6.0 を使用し、Linux 用のユニバーサル インストーラー パッケージを備えています。Windows では、 PowerShell 7.2 以降の更新はMicrosoft Updateサービス経由で行われます。この機能は PowerShell 6.0 から 7.1 では欠けていました。[108]
PowerShell 7.3
このバージョンには、一般的なコマンドレットの更新と修正、リリースパイプラインでのフレームワーク依存パッケージのテスト、ビルドとパッケージの改善が含まれています。[109]
PowerShell 7.4
PowerShell 7.4 は.NET 8に基づいています。このリリースでは、Web コマンドレットはデフォルトでUTF-8 エンコードになります( ASCIIスーパーセットWindows-1252 (別名 ISO-8859-1 ) から変更され、 Unicode をサポートしていません)。[110] [100]以前は、UTF-8 がデフォルトでした (ただし、すべてではありませんでした)。
類似コマンドを持つコマンドレットの比較
次の表には、PowerShell に付属するコマンドレットの一部が示されており、他のよく知られているコマンド ライン インタープリターの類似コマンドも記載されています。これらの類似コマンドの多くは、PowerShell 内でエイリアスとして定義されており、他の一般的なシェルに慣れているユーザーでも簡単に作業を開始できます。
注記
- ^ ab
lsとmanエイリアスは、PowerShell Core の Linux バージョンには存在しません。 - ^ 外部pingコマンドはPowerShellで引き続き使用できますが、Test-Connectionの出力はプログラムで検査できる構造化オブジェクトです。 [111]
- ^ Clear-Host は定義済みの PowerShell 関数として実装されています。
- ^ ab Windows NT 4、Windows 98 リソースキット、Windows 2000 サポートツールで利用可能
- ^ ab Windows XP Professional Edition で導入
- ^ UNIXではプロセスに任意のシグナルを送るためにも使用されるが、「Terminate」シグナルは単にデフォルトである。
- ^
curlおよびwgetエイリアスは PowerShell Core には存在しないため、同様の名前のネイティブ コマンドの呼び出しを妨げません。
ファイル名拡張子
- ^ ダイナミック リンク ライブラリ(DLL) は PowerShell 専用の形式ではありません。コンパイルされた .NETアセンブリのコードを格納するための汎用形式です。
- ^ XML はPowerShell 専用の形式ではありません。一般的な情報交換形式です。
アプリケーションサポート
代替実装
Pashというプロジェクトは、広く知られているUnix シェルの「bash 」をもじったもので、 Mono フレームワークを介してPowerShell をオープンソースかつクロスプラットフォームで再実装したものです。[139] Pash は Igor Moochnick によって作成され、C#で記述され、 GNU General Public Licenseの下でリリースされました。Pash の開発は 2008 年に中断されましたが、2012 年にGitHubで再開されました。[ 140]そして、PowerShell が正式にオープンソースかつクロスプラットフォームになった 2016 年に最終的に中止されました。[141]
参照
参考文献
- ^ 「PowerShell のリリース v7.4.5」。PowerShell /PowerShell リポジトリ。Microsoft。2024年8 月 27 日に取得– GitHub.com経由。
- ^ 「PowerShell for every system!」 2017 年 6 月 12 日 – GitHub.com経由。
- ^ Snover, Jeffrey (2008 年 5 月 25 日)。「PowerShell と WPF: WTF」。Windows PowerShell ブログ。Microsoft。
- ^ abcd Bright, Peter (2016年8月18日). 「PowerShellはMicrosoftの最新のオープンソースリリースで、LinuxとOS Xに登場」Ars Technica . Condé Nast . 2020年4月9日時点のオリジナルよりアーカイブ。 2020年5月12日閲覧。
- ^ 「PC 向け Windows 10 Insider Preview ビルド 14971 を発表」。
- ^ 「PowerShell がコマンド プロンプトに取って代わります」。
- ^ abcde "powershell" . 2023年3月13日閲覧。
- ^ Truher, Jim (2007 年 12 月)。「カスタム コマンドを使用して Windows PowerShell を拡張する」。MSDNマガジン。Microsoft。2008 年 10 月 6 日時点のオリジナルよりアーカイブ。
- ^ Lowe, Scott (2007 年 1 月 4 日)。「Exchange 2007: コマンド ライン に慣れる」。TechRepublic。CBS Interactive。2018年 11 月 16 日時点のオリジナルよりアーカイブ。2020 年5 月 12 日閲覧。
- ^ Snover, Jeffrey (2007 年 11 月 13 日)。「PowerShell の SQL Server サポート!」。Windows PowerShell ブログ(ブログ投稿)。Microsoft。2007 年 11 月 15 日時点のオリジナルからアーカイブ。2007 年11 月 13 日に取得。
- ^ Dragan, Richard V. (2003 年 4 月 23 日)。「Windows Server 2003 はあらゆる面で改善を実現」。PCMag.com。Ziff Davis。ここでの目立った特徴は、事実上すべての管理ユーティリティがコマンド ラインから動作するようになったことです
(そのほとんどは telnet 経由で利用できます)。
- ^ ジョーンズ、ドン (2020)。アイデアの殻: PowerShell の知られざる歴史。ドン・ギャノン・ジョーンズ。p. 25。ISBN 978-1-9536450-3-6。
- ^ Jeffrey P. Snover (2002 年 8 月 8 日)。「Monad Manifesto」(PDF)。Windows PowerShell ブログ。Microsoft。2021年4 月 2 日閲覧。
- ^ Biggar および Harbaugh (2017 年 9 月 14 日)。「Windows PowerShell の背後にいる人物」。To Be Continuous (ポッドキャスト)。Heavybit。2017年9 月 14 日閲覧。
- ^ 「 Windows PowerShell (Monad) が登場」。Windows PowerShell ブログ。Microsoft。2006年 4 月 25 日。
- ^ Snover, Jeffrey (2006 年 11 月 15 日)。「Windows PowerShell と Windows Vista」。Windows PowerShell ブログ(ブログ投稿) 。Microsoft。
- ^ 「Windows Management Framework (Windows PowerShell 2.0、WinRM 2.0、および BITS 4.0)」。サポート。Microsoft。2013年 9 月 30 日。2013 年 10 月 13 日時点のオリジナルよりアーカイブ。
- ^ Posey, Brien (2009 年 10 月 6 日)。「PowerShell の使い方を学ぶべき 10 の理由」。TechRepublic。2021年4 月 2 日閲覧。
- ^ 「Pester とは何か、なぜ気にする必要があるのか?」 2015 年 12 月 14 日。
- ^ Snover, Jeffrey (2016 年 8 月 18 日)。「PowerShell はオープン ソース化さ れており、Linux で利用できます」。Microsoft Azure ブログ。Microsoft 。
- ^ 「PowerShell/PowerShell」。GitHub 。 2016年8月18日閲覧。
- ^ Hansen, Kenneth、Calvo, Angel (2016 年 8 月 18 日)。「 Linuxおよびオープン ソース上の PowerShell!」Windows PowerShell ブログ。Microsoft 。
- ^ Foley, Mary Jo (2016 年 8 月 18 日)。「MicrosoftがPowerShell をオープンソース化し、Linux と Mac OS X に導入」ZDNet。CBS Interactive。
- ^ ab 「Nano Server 上の PowerShell」。TechNet。Microsoft。2016年10 月 20 日。
- ^ ジョーンズ、ドン (2020)。アイデアの殻: PowerShell の知られざる歴史。ドン・ギャノン・ジョーンズ。p. 45。ISBN 978-1-9536450-3-6。
- ^ Payette, Bruce (2008)。Windows PowerShell in Action。Manning Pubs Co シリーズ。Manning。p. 27。ISBN
9781932394900. 2016 年7 月 22 日に取得。PowerShellのコア言語は、
Korn シェル
の POSIX 1003.2 文法に基づいています。
- ^ ジョーンズ、ドン (2020)。アイデアの殻: PowerShell の知られざる歴史。ドン・ギャノン・ジョーンズ。p. 109。ISBN 978-1-9536450-3-6。
- ^ "about_Command_Precedence". TechNet . Microsoft . 2014 年 5 月 8 日。
- ^ Wheeler, Sean (2021 年 9 月 7 日)。「解析について - PowerShell」。Microsoft Docs。2021年12 月 5 日閲覧。
- ^ 「Windows PowerShell 拡張型システム」。2007年11 月 28 日閲覧。
- ^ abc 「Windows PowerShell コマンドレット」。2007年11 月 28 日閲覧。
- ^ 「最初のコマンドレットの作成」 。2007年11 月 28 日閲覧。
- ^ 「Get-Verb」。TechNet。Microsoft。2014年5月 8 日。
- ^ 「コマンドレットの概要」。MSDN。Microsoft。2014年 5 月 8日。
- ^ 「コマンド ライン入力を処理するパラメータの追加」 。2007年11 月 28 日閲覧。
- ^ 「パイプライン入力を処理するパラメータの追加」 。2007年11 月 28 日閲覧。
- ^ 「Windows PowerShell プロバイダー」 。2010年10 月 14 日閲覧。
- ^ Yoshizawa, Tomoaki、Ramos, Durval (2012 年 9 月 29 日)。「PowerShell 1.0 コマンドレット」。TechNet 記事。Microsoft。
- ^ 吉澤智明 (2012 年 7 月 10 日)。「PowerShell 2.0 コマンドレット」。TechNet 記事。Microsoft。
- ^ 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個のコマンドレットが付属しています
。 - ^ Wilson, Ed (2015)。「1: Windows PowerShell 5.0 の概要」。Windows PowerShellステップ バイ ステップ(第 3 版)。ワシントン州レドモンド: Microsoft Press。ISBN 978-1-5093-0043-3OCLC 927112976。Windows
PowerShell 5.0には、Windows 10に約1,300個のコマンドレットが付属しています
。 - ^ 「Windows PowerShell オーナーズ マニュアル: Windows PowerShell のパイプとパイプライン」。TechNet。Microsoft。2011年9月 27日閲覧。
- ^ Jones, Don (2008) 。「Windows PowerShell – パイプラインの再考」。Microsoft TechNet。Microsoft。2007年11 月 28 日閲覧。
- ^ 「Windows PowerShell オブジェクトの概念」。2007 年 8 月 19 日時点のオリジナルよりアーカイブ。2007 年11 月 28 日閲覧。
- ^ 「PowerShell のフォーマットと出力の実際の仕組み」 。2007年11 月 28 日閲覧。
- ^ 「詳細 – PowerShell のフォーマットは実際どのように機能しますか?」2007 年11 月 28 日閲覧。
- ^ "about_Pipelines". TechNet . Microsoft . 2014 年 5 月 8 日。
- ^ "about_Objects". TechNet . Microsoft . 2014 年 5 月 8 日。
- ^ ab "about_Format.ps1xml". TechNet . Microsoft . 2014 年 5 月 8 日。
- ^ 「PowerShell の匿名関数とコード ブロック」 。2012年1 月 21 日閲覧。
- ^ 「Windows PowerShell の変数の概要」。2007年11 月 28 日閲覧。
- ^ 「バイト変換」。今週の Windows PowerShell ヒント。2013 年11 月 15 日閲覧。
- ^ Ravikanth (2013 年 5 月 20 日)。「PowerShell 乗数を使用せずにサイズ単位 (KB、MB、GB、TB、PB) に変換する」。PowerShell Magazine。
- ^ abc "about_Functions". Microsoft TechNet . Microsoft . 2013 年 10 月 17 日. 2013 年11 月 15 日閲覧。
- ^ ab 「Windows PowerShell を使用した軽量テスト」。2007年11 月 28 日閲覧。
- ^ Angelopoulos, Alex; Karen, Bemowski (2007 年 12 月 4 日)。「PowerShell がスマート クォートに対応」。Windows IT Pro。Penton Media。2013年11月 15 日閲覧。
- ^ 「特殊文字について」。Powershell / スクリプト。Microsoft。2017年6 月 8 日。2019 年6 月 20 日閲覧。
- ^ 「Trap [Exception] { "PowerShell 内" }」。2007 年11 月 28 日閲覧。
- ^ 「Windows PowerShell スクリプトの実行」。Microsoft。2007年11 月 28 日閲覧。
- ^ "about_Signing". Microsoft TechNet . Microsoft . 2013 年 10 月 17 日. 2013 年11 月 15 日閲覧。
- ^ Lee Holmes (2006 年 9 月)。Windows PowerShell クイック リファレンス。O'Reilly Media。
- ^ eslesar (2023 年 5 月 23 日). 「Windows PowerShell Desired State Configuration の概要」. msdn.microsoft.com .
- ^ Chung, Leonard、Snover, Jeffrey、Kumaravel, Arul (2006 年 11 月 14 日) 。「これで完了です。Windows PowerShell 1.0 がリリースされました!」。Windows PowerShell ブログ。Microsoft 。
- ^ 「PowerShell はWindows Server 08 R2 (WS08R2) および Windows 7 (W7) に既定でインストールされます!」。Windows PowerShell ブログ。Microsoft。2008年 10 月 28 日。2011年9 月 27 日閲覧。
- ^ 「Windows Management Framework が登場!」 2009 年 10 月 27 日。 2009 年10 月 30 日閲覧。
- ^ 「Microsoft サポート サポート技術情報: Windows Management Framework (Windows PowerShell 2.0、WinRM 2.0、および BITS 4.0)」。Support.microsoft.com。2011 年 9 月 23 日。2011年9 月 27 日に取得。
- ^ 「W7 と WS08R2 について私たちが誇りと楽観視を抱いている 574 の理由」。Windows PowerShell ブログ。Microsoft。2008年 10 月 29 日。2011年9 月 27日閲覧。
- ^ Snover, Jeffrey (2008). 「PowerShell: 管理可能な Web サービスの作成」。2008 年 10 月 13 日時点のオリジナルよりアーカイブ。2015 年7 月 19 日閲覧。
- ^ 「PowerShell 2.0 CTP の新機能」 。2007年11 月 28 日閲覧。
- ^ 「Windows PowerShell V2 Community Technology Preview 2 (CTP2) – releaseNotes」。Microsoft。2008年5月6日時点のオリジナルよりアーカイブ。2008年5月5日閲覧。
- ^ 「PowerShell 1.0 と PowerShell 2.0 の違い」。2010 年 9 月 17 日時点のオリジナルよりアーカイブ。2010年6 月 26 日閲覧。
- ^ Jones, Don (2010 年 5 月)。「Windows PowerShell: スクリプトでコマンドレットを記述する」。TechNet マガジン。Microsoft。
- ^ 「GoGrid スナップイン - PowerShell を使用したクラウド サービスの管理」。Windows PowerShell ブログ。Microsoft。2008年 10 月 14 日。2011年9月 27 日閲覧。
- ^ 「Emit-XML」。Windows PowerShell ブログ。Microsoft。2008年 10 月 17 日。2011 年9 月 27日閲覧。
- ^ 「 V2のブロック コメント」。Windows PowerShell ブログ。Microsoft。2008年 6 月 14 日。2011 年9 月 27 日閲覧。
- ^ Lee, Thomas (2012 年 8 月 13 日)。「PowerShell バージョン 3 が RTM になりました!」Under The Stairs。2012年8 月 13 日閲覧。
- ^ abc 「 Windows Management Framework 3.0」。ダウンロード センター。Microsoft。2012年 9 月 4 日。2012 年11 月 8 日閲覧。
- ^ 「Windows Management Framework 3.0 Community Technology Preview (CTP) #2 がダウンロード可能」。Windows PowerShell ブログ。Microsoft。2011年 12 月 2 日。
- ^ 「Windows Management Framework 3.0」。ダウンロード センター。Microsoft。2012年12 月 3 日。
- ^ Jofre, JuanPablo (2016 年 12 月 14 日)。「Windows PowerShell システム要件」。Microsoft Developer Network。Microsoft。2017年4月 20 日閲覧。
- ^ Honeycutt, Jerry (2012). Woolley, Valerie (編). Windows 8 の紹介: IT プロフェッショナル向け概要. ワシントン州レドモンド: Microsoft Press . ISBN 978-0-7356-7050-1。
- ^ 「Windows Management Framework 4.0 が利用可能になりました」。Microsoft 2013 年 10 月 24 日。2013 年11 月 4日閲覧。
- ^ Levy, Shay (2013 年 6 月 25 日)。「Windows PowerShell 4.0 の新機能」。PowerShell Magazine。2013年6 月 26 日閲覧。
- ^ 「Windows Server 2012 R2 PowerShell の Desired State Configuration」。Channel 9。Microsoft。2013年6 月 3 日。2013年 12 月 26 日時点のオリジナルよりアーカイブ。2013年6 月 26 日閲覧。
- ^ Hall, Adrian (2013 年 6月 7 日)。「Thoughts from Microsoft TechEd North America」。ブログ: ヒントとコツ。Splunk。2013年6 月 26 日閲覧。
- ^ 「Windows Management Framework (WMF) 5.0 RTM パッケージ が再公開されました」。Windows PowerShell ブログ。Microsoft。2016年 2 月 24 日。
- ^ 「Q and A」。GitHub 。 2015年4月21日閲覧。
- ^ Snover, Jeffrey (2014 年 4 月 3 日)。「Windows Management Framework V5 Preview」。blogs.technet.com。Microsoft。2014年 6 月 30 日時点のオリジナルよりアーカイブ。2015年4月21 日閲覧。
- ^ Jaap Brasser (2016 年 8 月 2 日) 曰く。「#PSTip Windows 10 Anniversary Update の新しい PowerShell コマンド」。
- ^ 「Windows Server 2016 Standard Edition の新機能 パート 9 - 管理と自動化」。2016 年 9 月 4 日。
- ^ 「Microsoft.PowerShell.LocalAccounts モジュール」。technet.microsoft.com。2016年 6 月 16 日。
- ^ 「Windows Management Framework (WMF) 5.1 Preview の発表」。2016 年 7 月 16 日。
- ^ 「WMF 5.1」。Microsoftダウンロード センター。
- ^ 「Windows PowerShell とは? - PowerShell」。Microsoft Learn。2024年 3 月 7 日。2024 年8 月 19 日に閲覧。
- ^ 「Windows PowerShell 5.1 から PowerShell 7 への移行 - PowerShell」。Microsoft Learn。2024年 4 月 2 日。2024 年8 月 19 日閲覧。
- ^ Aiello, Joey (2018 年 1 月 11 日)。「PowerShell Core 6.0: 一般提供 (GA) およびサポート開始!」PowerShell チーム ブログ。Microsoft。2018 年 6 月 11 日時点のオリジナルよりアーカイブ。2018 年6 月 11 日閲覧。
- ^ Aiello, Joey; Wheeler , Sean (2018 年 1 月 10 日)。「 PowerShell Core サポート ライフサイクル」。Microsoft Docs。Microsoft。
- ^ Calvo, Angel (2018 年 1 月 11 日)。「移行する最も魅力的な理由トップ 10」。PowerShell AMA。Microsoft。
- ^ sdwheeler (2023 年 8 月 3 日)。「PowerShell Core 6.0 の新機能」。learn.microsoft.com。2023年12 月 11 日閲覧。
デフォルトのエンコードは、New-ModuleManifest を除き、BOM なしの UTF-8 です。
- ^ ab 「VS Code および PowerShell でのファイル エンコーディングについて - PowerShell」。learn.microsoft.com。2023年 11 月 29 日。2023 年12 月 11 日に閲覧。
- ^ Aiello, Joey (2018 年 9 月 13 日)。「PowerShell Core 6.1の発表」。devblogs.microsoft.com。Microsoft。2019年6月 1日閲覧。
- ^ “PowerShell/PowerShell”. GitHub . 2020年6月22日閲覧。
- ^ abc Lee, Steve (2019 年 4 月 5 日)。「PowerShell の次のリリース - PowerShell 7」。Microsoft。2019年6 月 1 日閲覧。
- ^ Lee, Steve (2019 年 3 月 28 日 ) 。「PowerShell Core 6.2 の一般提供」。devblogs.microsoft.com。Microsoft。2019年6月 1 日閲覧。
- ^ Mackie, Kurt (2019 年 5 月 30 日)。「Microsoft が PowerShell 7 プレビューをリリース」。1105 Media Inc. 2019 年6 月 1 日閲覧。
- ^ Lee, Steve (2019 年 5 月 30日) 。「PowerShell 7 ロードマップ」。devblogs.microsoft.com。Microsoft。2020年8月 12 日閲覧。
- ^ “PowerShell 7 Preview 5 | PowerShell”. 2019年10月23日. 2020年2月15日時点のオリジナルよりアーカイブ。 2020年3月5日閲覧。
- ^ 「PowerShell 7.2 は、Microsoft の次世代シェルの新バージョンです」。itsfoss.net。2021年 11 月 12 日。
- ^ “PowerShell のリリース v7.3.0 · PowerShell/PowerShell”. GitHub . 2022年11月9日時点のオリジナルよりアーカイブ。 2022年3月7日閲覧。
- ^ 「Webcmdlets は CarloToso によってデフォルトの文字セット エンコーディングを UTF8 に設定します · Pull Request #18219 · PowerShell/PowerShell」。GitHub。2023年12月 11 日閲覧。
- ^ 「Test-Connection」。PowerShellドキュメント。Microsoft。2015年 8 月 9 日。
- ^ “Tar and Curl Come to Windows! - Microsoft Tech Community - 382409”. 2019年3月22日. 2020年9月11日時点のオリジナルよりアーカイブ。 2020年5月17日閲覧。
- ^ Wheeler, Sean (2020 年 6 月 2 日)。「スクリプトについて」。Microsoft Docs。Microsoft。
- ^ Wheeler, Sean; Smatlak, David; Wilson, Chase (2019 年 10 月 16 日)。「PowerShell モジュール マニフェストの記述方法」。ドキュメント。Microsoft。
- ^ Wheeler, Sean; Smatlak, David (2019 年 11 月 22 日)。「PowerShell スクリプト モジュールの記述方法」。Microsoft Docs。Microsoft。
- ^ Wheeler, Sean (2016 年 11 月 13 日)。「PowerShell バイナリ モジュールの作成方法」。Microsoft Docs。Microsoft。
- ^ Wheeler, Sean; Jofre, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David (2020 年 6 月 2 日)。「Types.ps1xml について」。Microsoft Docs。Microsoft。
- ^ Wheeler, Sean. 「Export-Clixml」。Microsoft Docs。Microsoft。
- ^ Wheeler, Sean; Jofre, Juan Pablo; Vorobev, Sergei; Nikolaev, Kirill; Coulter, David. 「エクスポート コンソール」。Microsoft Docs。Microsoft。
- ^ Wheeler, Sean (2020 年 6 月 2 日)。「セッション構成ファイルについて」。Microsoft Docs。Microsoft。
- ^ Wheeler, Sean (2020 年 6 月 2 日)。「New-PSRoleCapabilityFile」。Microsoft Docs。Microsoft。
- ^ 「Microsoft Transporter Suite for Lotus Domino」。Microsoft。2008年3 月 7 日閲覧。
- ^ 「PowerTools for Open XML」 。2008年6 月 20 日閲覧。
- ^ 「MO74: WebSphere MQ – Windows PowerShell ライブラリ」 。2007年12 月 5 日閲覧。
- ^ 「IoT Core アドオンのコマンドライン オプション」 。2020年6 月 13 日閲覧。
- ^ 「Quest Software による Active Directory 用の PowerShell コマンド」 。2008年7 月 2 日閲覧。
- ^ 「グループ ポリシーによる PowerShell リモート処理」 。2007年12 月 7 日閲覧。
- ^ 「VMware vSphere PowerCLI」。2014年12月30日時点のオリジナルよりアーカイブ。2014年9月9日閲覧。
- ^ 「IIS7 PowerShell Provider Tech Preview 2」。Windows PowerShell ブログ。2010 年 2 月 4 日時点のオリジナルよりアーカイブ。2008 年7 月 3 日閲覧。
- ^ 「Win7 診断チームに感謝」。2009年6 月 15 日閲覧。
- ^ Michael, Niehaus (2009 年 7 月 10 日)。「MDT 2010 の新機能 #16: PowerShell のサポート」。2014 年10 月 27 日閲覧。
- ^ 「Data ONTAP PowerShell ToolKit に対する NetApp の称賛」2010 年6 月 15 日閲覧。
- ^ 「PowerShell Toolkit 4.2 発表」。2016 年 6 月 23 日。2016年9 月 7 日閲覧。
- ^ 「PowerShell を使用した異種ジョブ スケジューリング」 。2010年9 月 15 日閲覧。
- ^ 「UIAutomation PowerShell Extensions」。2016年8月17日時点のオリジナルよりアーカイブ。2012年2月16日閲覧。
- ^ 「EqualLogic HIT-ME with PowerShell」 。2012年3 月 9 日閲覧。
- ^ de:LOGINventory
- ^ 「Selenium PowerShell eXtensions」。2013年1月19日時点のオリジナルよりアーカイブ。2012年8月20日閲覧。
- ^ 「Pash」。SourceForge。Dice Holdings, Inc. 2011年9月27日閲覧。
- ^ 「Pash プロジェクト」。GitHub。2013年4月 10 日閲覧。
- ^ 「Pash は現在廃止されています · Issue #429 · Pash-Project/Pash」。GitHub。2019年11月 26 日閲覧。
さらに読む
- Finke , Douglas (2012)。Windows PowerShell for Developers。O'Reilly Media。ISBN 978-1-4493-2270-0。
- Holmes, Lee (2006)。Windows PowerShellクイック リファレンス。O'Reilly Media。ISBN 0-596-52813-2。
- ホームズ、リー (2007)。Windows PowerShellクックブック。O'Reilly Media。ISBN 978-0-596-52849-2。
- Jones, Don; Hicks, Jeffery (2010)。Windows PowerShell 2.0: TFM (第 3 版)。Sapien Technologies。ISBN 978-0-9821314-2-8。
- ジョーンズ、ドン (2020)。『アイデアの殻: PowerShell の知られざる歴史』。自費出版。ISBN 978-1-9536450-3-6。
- Kopczynski, Tyson、Handley, Pete、Shaw, Marco (2009)。Windows PowerShell Unleashed (第 2 版) 。Pearson Education。ISBN 978-0-672-32988-3。
- Kumaravel , Arul; White, Jon; Naixin Li, Michael; Happell, Scott; Xie, Guohui; Vutukuri, Krishna C. (2008)。『プロフェッショナル Windows PowerShell プログラミング: スナップイン、コマンドレット、ホスト、プロバイダー』。Wrox Press。ISBN 978-0-470-17393-0。
- Oakley, Andy (2005). Monad (別名 PowerShell) . O'Reilly Media . ISBN 0-596-10009-4。
- Watt , Andrew (2007) 。Professional Windows PowerShell。Wrox Press。ISBN 978-0-471-94693-9。
- Wilson, Ed (2013)。Windows PowerShell 3.0ステップバイステップ。Microsoft Press。ISBN 978-0-7356-6339-8。
- Wilson, Ed (2014)。Windows PowerShellベストプラクティス。Microsoft Press。ISBN 978-0-7356-6649-8。
