パワーシェル

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
パワーシェル
PowerShell Core 6.0 icon.png
PowerShell Core7.1.5とWindowsTerminal.png
WindowsターミナルでのPowerShellコアセッションのスクリーンショット
パラダイム命令型、パイプラインオブジェクト指向機能的反射的
によって設計されたジェフリー・スノーヴァー、ブルース・ペイエット、ジェームズ・トルーハー(他)
デベロッパーマイクロソフト
初登場2006年11月14日; 15年前 (2006-11-14
安定リリース
7.2.1 / 2021年12月15日; 2か月前[2] (2021-12-15)
プレビューリリース
v7.2.0-rc.1 [1] / 2021年10月23日; 4ヶ月前 (2021-10-23)
規律の入力強く安全で、暗黙的ダイナミック
実装言語C#
プラットホーム.NET Framework.NET
OS
ライセンスMITライセンス[3](ただし、Windowsコンポーネントはプロプライエタリのままです)
ファイル名拡張子
  • .ps1(スクリプト)
  • .ps1xml(XMLドキュメント)
  • .psc1(コンソールファイル)
  • .psd1(データファイル)
  • .psm1(スクリプトモジュール)
  • .pssc(セッション構成ファイル)
  • .psrc(役割機能ファイル)
  • .cdxml(コマンドレット定義XMLドキュメント)
Webサイトmicrosoft .com / powershell
に影響を受けた
PythonKshPerlC#CLDCLSQLTclTk[4] ChefPuppet

PowerShellまたはMicrosoftPowerShell (以前のWindows PowerShell)は、 Microsoftのタスク自動化および構成管理プログラムであり、コマンドラインシェルと関連するスクリプト言語で構成されています。当初はWindowsPowerShellと呼ばれるWindowsコンポーネントのみでしたが、 PowerShell Coreの導入により、2016年8月18日にオープンソースおよびクロスプラットフォームになりました。[5]前者は.NETFramework上に構築され、後者は.NETCore上に構築されていますWindowsPowerShellの名前 はWindows11および10の最新バージョンに引き続き存在しますが、PowerShellの最新バージョンはPowerShellまたはMicrosoftPowerShellと呼ばれます。

PowerShellでは、管理タスクは通常、特定の操作を実装する特殊な.NETクラスであるコマンドレット(コマンドレットと発音)によって実行されます。これらは、プロバイダーを介してPowerShellで利用できるようになっているファイルシステムレジストリなどのさまざまなデータストアのデータにアクセスすることで機能しますサードパーティの開発者は、コマンドレットとプロバイダーをPowerShellに追加できます。[6] [7]コマンドレットはスクリプトで使用でき、スクリプトはモジュールにパッケージ化できます。

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

PowerShellには、コマンドレットからアクセスできる独自の広範なコンソールベースのヘルプ(Unixシェルのマニュアルページと同様)が含まれています。更新されたローカルヘルプの内容は、コマンドレットを介してインターネットから取得できます。または、への切り替えを介して、ケースバイケースでWebからのヘルプを取得することもできますGet-HelpUpdate-Help-onlineGet-Help

背景

背景

パーソナルコンピュータ用のMicrosoftWindowsのすべてのバージョンには、オペレーティングシステムを管理するためのコマンドラインインタプリタ(CLI)が含まれています。その前身であるMS-DOSは、CLIのみに依存していました。これらはMS-DOSWindows 9x、およびWindowsNTファミリのオペレーティングシステムに含まれています。どちらもいくつかの基本的な内部コマンドをサポートしています。その他の目的では、別のコンソールアプリケーションを作成する必要があります。また、さまざまなタスクを自動化するために使用できる基本的なスクリプト言語(バッチファイル)も含まれています。ただし、これらを使用してのすべての側面を自動化することはできません。COMMAND.COMcmd.exeグラフィカルユーザーインターフェイス(GUI)機能。これは、コマンドラインでの操作に相当するものが制限されており、スクリプト言語が基本的なものであるためです。Windows Server 2003では、状況は改善されましたが、スクリプトのサポートは依然として不十分でした。[10]

Microsoftは、1998年にWindows98を搭載したWindowsScript Hostと、そのコマンドラインベースのホストを導入することで、これらの欠点のいくつかに対処しようとしましたActive Scriptエンジンと統合され、コンポーネントオブジェクトモデル(COM )を介してアプリケーションによって公開されるAPIを活用して、JScriptVBScriptなどの互換性のある言語でスクリプトを記述できるようにします。ただし、独自の欠点があります。そのドキュメントにはあまりアクセスできず、いくつかの有名なコンピュータウイルスの後で、システムの脆弱性ベクトルとしてすぐに評判を得ました。cscript.exeセキュリティ対策の弱点を悪用しました。さまざまなバージョンのWindowsは、さまざまな専用コマンドラインインタープリター(netshWMICなど)に独自のコマンドセットを提供していましたが、相互運用性はありませんでした。

カーミット

1990年代後半までに、IntelはMicrosoftに来て、将来のIntelCPUの開発をサポートするためのより適切なプラットフォームであるIntelCPUで実行されるWindowsを作成するための支援を求めていました。当時、Intel CPUの開発は、 RISCアーキテクチャCPUでSolarisUnixバリアント)を実行するSunMicrosystemsコンピュータで行われていました。Windows上でIntelの多くのKornShell自動化スクリプトを実行する機能は、重要な機能として識別されました。内部的には、MicrosoftはKermitというコード名のKornShellのWindowsポートを作成する取り組みを開始しました。[11] Intelは最終的にLinuxに軸足を移しましたIntel CPUで実行できるベースの開発プラットフォームであり、Kermitプロジェクトを冗長化します。しかし、完全に資金提供されたチームにより、マイクロソフトのプログラムマネージャーであるジェフリースノーバーは、マイクロソフトの管理自動化の問題に対して、より汎用的なソリューションを作成する機会があることに気づきました。


モナド

2002年までに、Microsoftは、Monad(Microsoft ShellまたはMSHとも呼ばれる)と呼ばれるCLIを含む、コマンドライン管理への新しいアプローチの開発を開始しました。その背後にあるアイデアは、2002年8月に、チーフアーキテクトであるジェフリースノーバーによって「モナドマニフェスト」と呼ばれるホワイトペーパーで公開されました[12] 2017年のインタビューで、SnoverはPowerShellの起源について説明し、 「 WindowsとLinuxのコアアーキテクチャの違い」のために機能しなかったUnixツールをWindowsで利用できるようにしようとしていたと述べています。具体的には、LinuxはすべてをASCIIテキストファイルと見なしますが、Windowsはすべてを「API 」と見なします。 構造化されたデータを返します」。それらは基本的に互換性がなく、別のアプローチを取るようになりました。[13]

Monadは、さまざまなコア管理タスクを自動化できる新しい設計の新しい拡張可能なCLIになる予定でした。マイクロソフトは、2003年10月にロサンゼルスで開催された専門能力開発会議で最初にモナドを公開しました。数か月後、彼らはプライベートベータを公開し、最終的にはパブリックベータになりました。マイクロソフトは、最初のMonadパブリックベータリリースを2005年6月17日に、ベータ2を2005年9月11日に、ベータ3を2006年1月10日に公開しました。

PowerShell

2006年4月25日、最初のMonadの発表から間もなく、Microsoftは、Monadの名前がWindows PowerShellに変更され、管理テクノロジ製品の重要な部分として位置付けられたことを発表しました。[14] PowerShellのリリース候補(RC)1が同時にリリースされました。名前の変更とRCの両方の重要な側面は、これが単なるアドオンではなく、Windowsのコンポーネントになったことです。

PowerShellバージョン1のリリース候補2は2006年9月26日にリリースされ、最終リリースは2006年11月14日にWebにリリースされました。以前のバージョンのWindows用のPowerShellは2007年1月30日にリリースされました。[15] PowerShellv2.0の開発はPowerShellv1より前に開始されました。 .0が出荷されました。開発中に、Microsoftは3つのコミュニティテクノロジプレビュー(CTP)を出荷しました。マイクロソフトは、これらのリリースを一般に公開しました。Windows PowerShell v2.0の最後のCTPリリースは、2008年12月に利用可能になりました。

Ubuntu 14.04x64上のPowerShellfor Linux 6.0 Alpha 9

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

Windows 10は、PowerShellのテストフレームワークを出荷しました。[18]

2016年8月18日、MicrosoftはPowerShellをWindows、 macOSCentOSUbuntuをサポートするオープンソースおよびクロスプラットフォームにしたことを発表しました[19][5]ソースコードはGitHubで公開されました。[20]オープンソースへの移行により、 .NETCoreで実行される「PowerShellCore」と呼ばれるPowerShellの2番目の化身が作成されましたこれは、完全な.NETFrameworkで実行される「WindowsPowerShell」とは異なります[21]バージョン5.1以降、PowerShellCoreはWindowsServer 2016 NanoServerにバンドルされています[22] [23]

デザイン

PowerShellの主要な設計戦術は、Windows、Windows Management Instrumentation、.NET Framework、およびその他のソフトウェアにすでに存在する多数のAPIを活用することでした。PowerShellコマンドレットは、既存の機能を「ラップアラウンド」します。この戦術の目的は、管理者と管理者の間で、管理者にとって使いやすく、より一貫性のあるインターフェイスと、基盤となるさまざまな機能を提供することです。PowerShellを使用すると、管理者は.NET、WMI、または低レベルのAPIコーディングを知る必要がなく、代わりにPowerShellによって公開されたコマンドレットの使用に集中できます。この点で、PowerShellは、特定の対象者が既存の機能にアクセスしやすくすることに重点を置いて、新しい機能をほとんど作成しません。[24]

文法

PowerShellの開発者は、ツールのコア文法をPOSIX 1003.2KornShell 文法に基づいています[25]

ただし、PowerShellの言語は、PHPPerl、およびその他の多くの既存の言語の影響も受けていました。[26]

名前付きコマンド

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

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

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

拡張型システム

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

コマンドレット

コマンドレットは、特定の機能を実装するPowerShell環境の特殊なコマンドです。これらは、PowerShellスタックのネイティブコマンドです。コマンドレットは、Get-ChildItemなどの動詞-名詞の命名パターンに従います。これにより、自己文書化コードになります。[30]コマンドレットは結果をオブジェクトとして出力し、オブジェクトを入力として受け取ることもできるため、パイプラインの受信者としての使用に適しています。コマンドレットが複数のオブジェクトを出力する場合、コレクション内の各オブジェクトは、次のオブジェクトが処理される前にパイプライン全体に渡されます。[30]

コマンドレットは特殊な.NETクラスであり、PowerShellランタイムが実行時にインスタンス化して呼び出しますCmdletコマンドレットは、から、またはから派生しますPSCmdlet。後者は、コマンドレットがPowerShellランタイムと対話する必要がある場合に使用されます。[30]これらの基本クラスは、コマンドレットの実装が機能を提供するためにオーバーライドする特定のメソッド– BeginProcessing()ProcessRecord()および–を指定します。EndProcessing()コマンドレットが実行されるたびに、PowerShellはこれらのメソッドを順番に呼び出し、ProcessRecord()パイプライン入力を受信すると呼び出されます。[31]オブジェクトのコレクションがパイプされると、コレクション内のオブジェクトごとにメソッドが呼び出されます。コマンドレットを実装するクラスには、1つの.NETが必要です。属性CmdletAttribute–コマンドレットの名前を構成する動詞と名詞を指定します。一般的な動詞は列挙型として提供されます。[32] [33]

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

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

基本のPowerShellインストールに含まれるコマンドレットの数は、通常、バージョンごとに増加しています。

バージョン コマンドレット
Windows PowerShell 1.0 129 [37]
Windows PowerShell 2.0 632 [38]
Windows PowerShell 3.0 約1,000 [39]
Windows PowerShell 4.0
Windows PowerShell 5.0 約1,300 [40]
Windows PowerShell 5.1 1586 [要出典]
PowerShell Core 6.0
PowerShell Core 6.1
PowerShell Core 6.2
PowerShell 7.0 1507 [要出典]
PowerShell 7.1
PowerShell 7.2

コマンドレットは、スナップイン(v2では非推奨)およびモジュールを介してシェルに追加できます。ユーザーは、基本のPowerShellインストールに含まれているコマンドレットに限定されません。

パイプライン

PowerShellは、パイプラインの概念を実装しています。これにより、あるコマンドレットの出力を入力として別のコマンドレットにパイプ処理できます。たとえば、Get-Processコマンドレットの出力をにパイプして、ページングされたメモリWhere-Objectが1 MB未満のプロセスをフィルタリングし、次にコマンドレットにパイプして(たとえば、ハンドル数でオブジェクトを並べ替える)、最後にコマンドレットにパイプすることができます。ハンドル数に基づいて最初の10個のプロセスのみを選択します。[要出典]Sort-ObjectSelect-Object

Unixパイプラインと同様に、PowerShellパイプラインは、|演算子を使用してステージを接続し、複雑なコマンドを作成できます。ただし、PowerShellパイプラインはUnixパイプラインとは異なり、オペレーティングシステムによって調整された一連のプロセスとしてではなく、PowerShellランタイムでステージが実行されます。さらに、バイトストリームではなく、構造化された.NETオブジェクトが1つのステージから次のステージに渡されます。PowerShellランタイム内でオブジェクトを使用してステージを実行すると、データ構造をシリアル化したり、テキスト出力を明示的に解析してデータ構造を抽出したりする必要がなくなります。[41]オブジェクトはカプセル化することもできます含まれているデータを処理する特定の関数。受信者のコマンドで使用できるようになります。[42] [43]パイプラインの最後のコマンドレットの場合、PowerShellはその出力オブジェクトをコマンドレットに自動的にパイプします。Out-Defaultコマンドレットはオブジェクトをフォーマットオブジェクトのストリームに変換し、それらを画面にレンダリングします。[44] [45]

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

スクリプティング

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

.オブジェクトメンバーには、C#構文のように、表記法を使用してアクセスできます。PowerShellは$args、コマンドラインから関数に渡されるすべてのコマンドライン引数の配列で$_ある、、パイプライン内の現在のオブジェクトを参照するなどの特別な変数を提供します。[50] PowerShellは、配列連想配列も提供します。PowerShellスクリプト言語は、コマンドラインに入力された算術式もすぐに評価し、GB、MB、KBなどの一般的な省略形を解析します。[51] [52]

functionキーワードを使用して、PowerShellは関数の作成を提供します。単純な関数の一般的な外観は次のとおりです。[53]

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

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

関数 動詞-名詞
{{
  param  
    #静的パラメータの定義
  )。
  dynamicparam  {
    #動的パラメータの定義
  }
  開始 {
    #パイプラインの開始時に実行する命令のセット
  }
  プロセス {
    #主な命令セット、パイプラインの各アイテムに対して実行
  }
  終了 {
    #パイプラインの最後で実行する一連の命令
  }
}

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

名前 value1value2 動詞-名詞-Param1value1 -Param2 value2
    

PowerShellでは、名前空間を角かっこ([])で囲み、コロンのペア(::)を使用して静的メソッドを示すことにより、静的.NETメソッドを呼び出すことができます。[54]例:

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

PowerShellでオブジェクトを作成する方法は数十あります。.作成されると、表記法を使用してオブジェクトのプロパティとインスタンスメソッドにアクセスできます。[54]

PowerShellは、rawとescapedの両方の文字列を受け入れます。一重引用符で囲まれた文字列は生の文字列であり、二重引用符で囲まれた文字列はエスケープされた文字列です。PowerShellは、まっすぐな引用符と中向きの引用符を同等に扱います。[55]

次の特殊文字のリストは、PowerShellでサポートされています。[56]

PowerShell特殊文字
順序 意味
`0 ヌル
`a アラート
`b バックスペース
`e 逃れる
`f フォームフィード
`n 改行
`r キャリッジリターン
`t 水平タブ
`u {x} Unicodeエスケープシーケンス
`v 垂直タブ
-% この時点から文字通りすべての文字を処理します

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

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

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

ホスティング

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

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

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

望ましい状態の構成

DSCでは、ソフトウェア環境の構成方法を宣言的に指定できます。[61]

構成を実行すると、DSCはシステムが構成に記述されている状態を取得することを確認します。DSC構成はべき等です。Local Configuration Manager (LCM)は、リソース(DSCの必須部分) によって記述された制御フローを使用してシステムを定期的にポーリングし、構成の状態が維持されていることを確認します。

バージョン

PowerShellは、最初はコードネーム「モナド」を使用していましたが、2003年10月にロサンゼルスで開催されたProfessional DevelopersConferenceで初めて公開されました。すべてのメジャーリリースは引き続きサポートされており、各メジャーリリースには以前のバージョンとの下位互換性があります。

Windows PowerShell 1.0

Windowsコンソールを使用したWindowsPowerShell1.0セッション

PowerShell 1.0は、Windows XP SP2Windows Server 2003 SP1、およびWindowsVista用に2006年11月にリリースされました。[62]これはWindowsServer2008のオプションのコンポーネントです

Windows PowerShell 2.0

Windows7上のWindowsPowerShell ISE v2.0 、PowerShellスクリプト統合開発環境。

PowerShell2.0はWindows7およびWindowsServer 2008 R2 [63]と統合されており、 Windows XP Service Pack 3、Windows Server 2003 Service Pack 2、およびWindows Vista Service Pack1向けにリリースされています。[64] [65]

PowerShell v2には、240を超える新しいコマンドレットに加えて、スクリプト言語とホスティングAPIへの変更が含まれています。[66] [67]

PowerShell2.0の新機能は次のとおりです。[68] [69] [70]

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

Windows PowerShell 3.0

PowerShell 3.0は、Windows8およびWindowsServer2012と統合されていますMicrosoftは、PowerShell3.0をServicePack1を搭載したWindows7、Service Pack1を搭載したWindowsServer 2008、およびService Pack1を搭載したWindowsServer 2008R2でも利用できるようにしました。[75] [76]

PowerShell 3.0は、より大きなパッケージであるWindows Management Framework 3.0(WMF3)の一部であり、リモート処理をサポートするWinRMサービスも含まれています。[76] Microsoftは、WMF3のいくつかのCommunity TechnologyPreviewリリースを作成しました。Windows Management Framework 3.0の初期のコミュニティテクノロジープレビュー2(CTP 2)バージョンが2011年12月2日にリリースされました。[77] Windows Management Framework 3.0は、2012年12月に一般提供され[78]、Windows8およびWindowsServerに含まれています。デフォルトでは2012。[79]

PowerShell3.0の新機能は次のとおりです。[76] [80] :33–34 

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

Windows PowerShell 4.0

PowerShell 4.0は、Windows8.1およびWindowsServer 2012R2と統合されますMicrosoftは、PowerShell4.0をWindows7 SP1Windows Server 2008 R2 SP1、およびWindows Server2012でも利用できるようにしました。[81]

PowerShell4.0の新機能は次のとおりです。

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

Windows PowerShell 5.0

PowerShell5.0アイコン

PowerShell5.0を含むWindowsManagement Framework(WMF)5.0 RTMは、重大なバグを伴う初期リリースに続いて、2016年2月24日にWebに再リリースされました。[85]

含まれる主な機能:

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

Windows PowerShell 5.1

これは、2016年8月2日にWindows 10 Anniversary Update [88]とともに、およびWindows Server2016でリリースされました。[89] PackageManagementがプロキシをサポートするようになり、PSReadLineがViModeをサポートするようになり、Get-TimeZoneとSet-TimeZoneの2つの新しいコマンドレットが追加されました。LocalAccountsモジュールを使用すると、ローカルユーザーアカウントを追加/削除できます。[90] PowerShell 5.1のプレビューは、2016年7月16日にWindows 7、Windows Server 2008、Windows Server 2008 R2、Windows Server 2012、およびWindows Server 2012 R2でリリースされ[91]、2017年1月19日にリリースされました。[92]

PowerShell 5.1は、「デスクトップ」と「コア」の2つのエディションで提供される最初のバージョンです。「デスクトップ」エディションは、.NETFrameworkスタックで実行される従来のWindowsPowerShellの続きです。「Core」エディションは.NETCoreで実行され、Windows Server 2016 NanoServerにバンドルされています。フットプリントを小さくする代わりに、後者には、クリップボードを管理したり、コンピューターをドメインに参加させたりするためのコマンドレット、WMIバージョン1コマンドレット、イベントログコマンドレット、プロファイルなどの機能がありません。[23]これはWindows専用に作成されたPowerShellの最終バージョンでした。

PowerShell Core 6

PowerShell Core 6.0は、2016年8月18日にMicrosoftがPowerShell Coreを発表し、Windowsに依存しないクロスプラットフォームの製品を無料でオープンソースにするという決定を発表したときに最初に発表されました。[5] 2018年1月10日に、Windows、macOS、およびLinuxで一般提供が開始されました。[93]独自のサポートライフサイクルがあり、Windows10で導入されたMicrosoftライフサイクルポリシーに準拠しています。最新バージョンのPowerShellCoreのみがサポートされています。Microsoftは、PowerShell Core6.0のマイナーバージョンを6か月ごとに1つリリースする予定です。[94]

このバージョンのPowerShellでの最も重要な変更は、他のプラットフォームへの拡張です。Windows管理者の場合、このバージョンのPowerShellには主要な新機能は含まれていません。2018年1月11日のコミュニティへのインタビューで、PowerShellチームは、Windows PowerShell5.1からPowerShellCore6.0に移行するWindowsITプロフェッショナルに起こる最もエキサイティングなことのトップ10をリストするように求められました。それに応えて、MicrosoftのAngel Calvoは、クロスプラットフォームとオープンソースの2つしか挙げられませんでした。[95]

Microsoftによると、PowerShell 6.1の新機能の1つは、「 Windows10およびWindowsServer2019の1900以上の既存のコマンドレットとの互換性」です。[96]それでも、これらのコマンドレットの詳細は、変更ログのフルバージョンにはありません。[97] Microsoftは後に、PowerShellCoreがWindowsPowerShell 5.1に取って代わり、Windowsで牽引力を獲得できなかったため、この数では不十分であると公言しました。[98]しかし、Linuxでは人気がありました。[98]

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

PowerShell 7

PowerShell 7は、PowerShell Core 6.x製品、および最後にサポートされたWindowsPowerShellバージョンであるWindowsPowerShell5.1に代わるものです。[100] [98]開発の焦点は、PowerShell7をWindowsPowerShell 5.1の実行可能な代替品にすること、つまり、Windowsに付属するモジュールとの互換性の点でWindowsPowerShellとほぼ同等にすることでした。[101]

PowerShell7の新機能は次のとおりです。[102]

  • 並列処理の処理に役立つコマンドレット-ParallelスイッチForEach-Object
  • 組み込みのWindowsモジュールとの互換性の点でWindowsPowerShellとほぼ同等
  • 新しいエラービュー
  • コマンドGet-Errorレット
  • パイプライン内の次のコマンドレットの条件付き実行を可能にするパイプラインチェーン演算子(&&および)||
  • 三項演算?:演算子
  • 変数の??=既存の値がnullの場合にのみ変数に値を割り当てる演算子
  • null合体??演算子
  • クロスプラットフォームInvoke-DscResource(実験的)
  • Out-GridViewコマンドレットの返却
  • -ShowWindowのスイッチの返却Get-Help


PowerShell 7.2

PowerShell7.2は.NET6.0と一緒にリリースされ、Linux、Windows、Mac、およびDockerコンテナー形式で使用できます。[103]

新機能は

  • Linux用のユニバーサルインストーラーパッケージ
  • Windows MicrosoftUpdateのサポート
  • タブ補完の改善
  • 予測IntelliSenseを使用したPSReadLine2.1

コマンドレットと同様のコマンドの比較

次の表には、PowerShellに付属しているコマンドレットの一部が含まれており、他のよく知られたコマンドラインインタープリターの同様のコマンドに注目しています。これらの同様のコマンドの多くは、PowerShell内でエイリアスとして定義されてすぐに使用できるため、他の一般的なシェルに精通しているユーザーが簡単に作業を開始できます。

PowerShellコマンドレットと他のコマンドラインインタープリターの内部および外部コマンドとの比較
PowerShell(コマンドレット) PowerShell(エイリアス) Windowsコマンドプロンプト Unixシェル 説明
Get-ChildItem gci、dir、ls [a] dir ls 現在のフォルダまたは指定されたフォルダ内のすべてのファイルとフォルダを一覧表示します
テスト接続[b] ping ping ping 現在のマシンから指定されたマシンに ICMPエコー要求を送信するか、別のマシンにそうするように指示します
Get-Content gc、type、cat タイプ ファイルの内容を取得します
Get-Command gcm ヘルプどこで タイプこれcompgen 使用可能なコマンドを一覧表示し、コマンドパスを取得します
助けを得ます 助けて、男 ヘルプ 適切な、 コマンドのドキュメントをコンソールに出力します
クリアホスト cls、クリア cls クリア 画面をクリアします[c]
コピーアイテム cpi、copy、cp コピーxcopyrobocopy cp ファイルとフォルダを別の場所にコピーします
移動アイテム mi、move、mv 動く mv ファイルとフォルダを新しい場所に移動します
削除-アイテム ri、del、erase、rmdir、rd、rm delerasermdirrd rm、rmdir ファイルまたはフォルダを削除します
名前の変更-アイテム rni、ren、mv ren、名前を変更 mv 単一のファイル、フォルダー、ハードリンク、またはシンボリックリンクの名前を変更します
Get-Location gl、cd、pwd CD pwd 作業パス(現在のフォルダ)を表示します
ポップロケーション popd popd popd 作業パスを、スタックに最後にプッシュされた場所に変更します
プッシュロケーション プッシュ プッシュ プッシュ 作業パスをスタックに格納します
セット-場所 sl、cd、chdir cdchdir CD 作業パスを変更します
Tee-Object ティー 該当なし ティー 入力をファイルまたは変数にパイプし、パイプラインに沿って入力を渡します
書き込み-出力 エコー、書き込み エコー エコー 文字列またはその他のオブジェクトを標準出力に出力します
Get-Process gps、ps tlist、[d] タスクリスト[e] ps 実行中のすべてのプロセスを一覧表示します
停止プロセス spps、殺す 殺す[d] taskkill [e] 殺す[f] 実行中のプロセスを停止します
Select-String sls findstr 検索grep パターンに一致する線を印刷します
セット変数 sv、セット セットする env、export、set、setenv 環境変数の内容を作成または変更します
Invoke-WebRequest iwr、curl、wget [g] カール[105] wget、curl インターネット上のWebページからコンテンツを取得します

ノート

  1. ^ lsエイリアスはPowerShellCoreのLinuxバージョンにはありません。
  2. ^ 外部pingコマンドはPowerShellで引き続き使用できますが、Test-Connectionの出力は、プログラムで検査できる構造化オブジェクトです。[104]
  3. ^ Clear-Hostは事前定義されたPowerShell関数として実装されています。
  4. ^ a b Windows NT 4Windows 98リソースキット、Windows2000サポートツールで利用可能
  5. ^ a b Windows XP ProfessionalEditionで導入されました
  6. ^ UNIXでは、プロセスに任意のシグナルを送信するためにも使用されます。「終了」シグナルは、単なるデフォルトです。
  7. ^ curlおよびwgetエイリアスは、同様の名前のネイティブコマンドの呼び出しを妨げないように、PowerShellCoreにはありません。

ファイル名拡張子

拡大 説明
.ps1 スクリプトファイル[106]
.psd1 モジュールのマニフェストファイル。通常、スクリプトモジュールまたはバイナリモジュールが付属しています[107]
.psm1 スクリプトモジュールファイル[108]
.dll DLL準拠[a]バイナリモジュールファイル[109]
.ps1xml フォーマットおよびタイプ定義ファイル[48] [110]
.xml XML準拠の[b]シリアル化されたデータファイル[111]
.psc1 コンソールファイル[112]
.pssc セッション構成ファイル[113]
.psrc 役割機能ファイル[114]
  1. ^ ダイナミックリンクライブラリ(DLL)は、PowerShellのみの形式ではありません。これは、コンパイルされた.NETアセンブリのコードを格納するための一般的な形式です。
  2. ^ XMLはPowerShellのみの形式ではありません。人気のある情報交換フォーマットです。

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

申し込み バージョン コマンドレット プロバイダー 管理GUI
Exchange Server 2007年 402 はい はい
Windows Server 2008年 はい はい 番号
Microsoft SQL Server 2008年 はい はい 番号
Microsoft SharePoint 2010年 はい はい 番号
System Center Configuration Manager 2012 R2 400以上 はい 番号
System Center Operations Manager 2007年 74 はい 番号
SystemCenter仮想マシンマネージャー 2007年 はい はい はい
System Center Data Protection Manager 2007年 はい 番号 番号
Windows Compute Cluster Server 2007年 はい はい 番号
LotusDomino用のMicrosoftTransporter Suite [115] 08.02.0012 47 番号 番号
Microsoft PowerTools for Open XML [116] 1.0 33 番号 番号
IBM WebSphere MQ [117] 6.0.2.2 44 番号 番号
IoTコアアドオン[118] 74 未知の 未知の
ActiveDirectory用のクエスト管理シェル[119] 1.7 95 番号 番号
特殊操作ソフトウェアSpecopsコマンド[120] 1.0 はい 番号 はい
VMware vSphere PowerCLI [121] 6.5 R1 500以上 はい はい
インターネットインフォメーションサービス[122] 7.0 54 はい 番号
Windows7トラブルシューティングセンター[123] 6.1 はい 番号 はい
Microsoft Deployment Toolkit [124] 2010年 はい はい はい
NetApp PowerShell Toolkit [125] [126] 4.2 2000+ はい はい
JAMSスケジューラー–ジョブアクセスおよび管理システム[127] 5.0 52 はい はい
UIAutomation [128] 0.8 432 番号 番号
Dell Equallogic [129] 3.5 55 番号 番号
LOGINventory [130] 5.8 はい はい はい
SePSX [131] 0.4.1 39 番号 番号

代替実装

広く知られている「bash」Unixシェル駄洒落であるPashという名前のプロジェクトは、 Monoフレームワークを介したPowerShellのオープンソースおよびクロスプラットフォームの再実装です。[132] PashはIgorMoochnickによって作成され、C#で記述され、 GNU General PublicLicenseの下でリリースされましたPashの開発は2008年に停滞し、2012年にGitHubで再開され[133]、PowerShellが正式にオープンソースおよびクロスプラットフォームになった2016年にようやく終了しました。[134]

も参照してください

参考文献

  1. ^ 「PowerShell7.2.0RC1がテストに利用できるようになりました-MSPoweruser」
  2. ^ 「PowerShell / PowerShell」GitHub 2021年12月15日取得
  3. ^ 「すべてのシステムにPowerShell!」2017年6月12日–GitHub経由。
  4. ^ Snover、Jeffrey(2008年5月25日)。「PowerShellとWPF:WTF」WindowsPowerShellブログマイクロソフト。
  5. ^ a b c ブライト、ピーター(2016-08-18)。「PowerShellはMicrosoftの最新のオープンソースリリースであり、Linux、OSXに登場します」ArsTechnicaコンデナスト2020-04-09にオリジナルからアーカイブされました2020年5月12日取得
  6. ^ a b c de 「 WindowsPowerShell のしくみ」Microsoft DeveloperNetworkMicrosoft 2007年11月27日取得
  7. ^ Truher、Jim(2007年12月)。「カスタムコマンドを使用してWindowsPowerShellを拡張する」MSDNマガジンマイクロソフト。2008年10月6日にオリジナルからアーカイブされました。
  8. ^ ロウ、スコット(2007年1月4日)。「Exchange2007:コマンドラインに慣れる」TechRepublicCBSインタラクティブ2018-11-16にオリジナルからアーカイブされました2020年5月12日取得
  9. ^ Snover、Jeffrey(2007-11-13)。「PowerShellのSQLServerサポート!」Windows PowerShellブログ(ブログ投稿)。マイクロソフト。2007年11月15日にオリジナルからアーカイブされまし2007年11月13日取得
  10. ^ Dragan、Richard V.(2003年4月23日)。「WindowsServer2003はあらゆる面で改善をもたらします」レビュー。PCマガジンZiffDavisここでの傑出した機能は、事実上すべての管理ユーティリティがコマンドラインから機能するようになったことです(ほとんどはtelnetから利用できます)。
  11. ^ ジョーンズ、ドン(2020)。アイデアの殻:PowerShellの秘められた歴史p。25. ISBN 978-1-9536450-3-6
  12. ^ ジェフリーP.スノーバー(2002年8月8日)。「モナドマニフェスト」(PDF)WindowsPowerShellブログMicrosoft 2021年4月2日取得
  13. ^ Biggar and Harbaugh(2017-09-14)。「WindowsPowerShellの背後にいる男」継続的であること(ポッドキャスト)。ヘビービット2017年9月14日取得
  14. ^ 「WindowsPowerShell(モナド)が到着しました」WindowsPowerShellブログMicrosoft2006年4月25日。
  15. ^ Snover、Jeffrey(2006年11月15日)。「WindowsPowerShellおよびWindowsVista」Windows PowerShellブログ(ブログ投稿)。Microsoft
  16. ^ 「Windows管理フレームワーク(Windows PowerShell 2.0、WinRM 2.0、およびBITS 4.0)」サポートMicrosoft2013年9月30日。2013年10月13日のオリジナルからアーカイブ。
  17. ^ Posey、Brien(2009年10月6日)。「PowerShellの使い方を学ぶべき10の理由」TechRepublic 2021年4月2日取得
  18. ^ 「ペスターとは何ですか、なぜ私は気にする必要がありますか?」2015年12月14日。
  19. ^ Snover、Jeffrey(2016年8月18日)。「PowerShellはオープンソースであり、Linuxで利用できます」MicrosoftAzureブログMicrosoft
  20. ^ 「PowerShell / PowerShell」GitHub 2016年8月18日取得
  21. ^ ハンセン、ケネス; カルボ、エンジェル(2016年8月18日)。「Linuxおよびオープンソース上のPowerShell!」WindowsPowerShellブログMicrosoft
  22. ^ フォーリー、メアリー・ジョー(2016年8月18日)。「MicrosoftオープンソースPowerShell;それをLinuxとMacOSXにもたらします」ZDNetCBSインタラクティブ
  23. ^ a b "PowerShell on NanoServer"TechNetMicrosoft2016年10月20日。
  24. ^ ジョーンズ、ドン(2020)。アイデアの殻:PowerShellの秘められた歴史p。45. ISBN 978-1-9536450-3-6
  25. ^ Payette、ブルース(2007)。WindowsPowerShellの動作マニングパブ共同シリーズ。マニング。p。27. ISBN  97819323949002016年7月22日取得コアPowerShell言語は、 KornシェルのPOSIX1003.2文法に基づいています
  26. ^ ジョーンズ、ドン(2020)。アイデアの殻:PowerShellの秘められた歴史p。109. ISBN 978-1-9536450-3-6
  27. ^ "about_Command_Precedence"TechNetMicrosoft2014年5月8日。
  28. ^ ウィーラー、ショーン(2021-09-07)。「解析について-PowerShell」MicrosoftDocs 2021年12月5日取得{{cite web}}: CS1 maint: url-status (link)
  29. ^ 「WindowsPowerShell拡張型システム」2007年11月28日取得
  30. ^ a bc 「 WindowsPowerShell コマンドレット」2007年11月28日取得
  31. ^ 「最初のコマンドレットの作成」2007年11月28日取得
  32. ^ 「Get-Verb」TechNetMicrosoft2014年5月8日。
  33. ^ 「コマンドレットの概要」MSDNMicrosoft2014年5月8日。
  34. ^ 「コマンドライン入力を処理するパラメータの追加」2007年11月28日取得
  35. ^ 「パイプライン入力を処理するパラメータの追加」2007年11月28日取得
  36. ^ 「WindowsPowerShellプロバイダー」2010年10月14日取得
  37. ^ 吉沢知明; ラモス、ダーバル(2012年9月29日)。「PowerShell1.0コマンドレット」TechNetの記事マイクロソフト。
  38. ^ 吉沢知明(2012年7月10日)。「PowerShell2.0コマンドレット」TechNetの記事マイクロソフト。
  39. ^ Wilson、Ed(2013)。「1:Windows PowerShell3.0の概要」Windows Powershell3.0ステップバイステップカリフォルニア州セバストポル:MicrosoftPressISBN 978-0-7356-7000-6OCLC829236530 _ Windows PowerShell 3.0には、Windows8に約1,000個のコマンドレットが付属しています
  40. ^ Wilson、Ed(2015)。「1:Windows PowerShell5.0の概要」Windows PowerShellステップバイステップ(第3版)。ワシントン州レドモンド:MicrosoftPressISBN 978-1-5093-0043-3OCLC927112976 _ Windows PowerShell 5.0には、Windows10に約1,300個のコマンドレットが付属しています
  41. ^ 「WindowsPowerShellオーナーズマニュアル:WindowsPowerShellのパイプラインとパイプライン」TechNetMicrosoft 2011年9月27日取得
  42. ^ ジョーンズ、ドン(2008)。「WindowsPowerShell–パイプラインの再考」MicrosoftTechNetMicrosoft 2007年11月28日取得
  43. ^ 「WindowsPowerShellオブジェクトの概念」2007年8月19日にオリジナルからアーカイブされました2007年11月28日取得
  44. ^ 「PowerShellのフォーマットと出力が実際にどのように機能するか」2007年11月28日取得
  45. ^ 「詳細– PowerShellフォーマットは実際にどのように機能しますか?」2007年11月28日取得
  46. ^ "about_Pipelines"TechNetMicrosoft2014年5月8日。
  47. ^ "about_Objects"TechNetMicrosoft2014年5月8日。
  48. ^ a b "about_Format.ps1xml"TechNetMicrosoft2014年5月8日。
  49. ^ 「PowerShellの無名関数とコードブロック」2012年1月21日取得
  50. ^ 「WindowsPowerShellの変数の概要」2007年11月28日取得
  51. ^ 「バイト変換」今週のWindowsPowerShellのヒント2013年11月15日取得
  52. ^ ラヴィカント(2013年5月20日)。「PowerShell乗数を使用せずにサイズ単位(KB、MB、GB、TB、およびPB)に変換する」PowerShellマガジン
  53. ^ a b c "about_Functions"MicrosoftTechNetMicrosoft2013年10月17日2013年11月15日取得
  54. ^ a b "WindowsPowerShellを使用した軽量テスト" 2007年11月28日取得
  55. ^ アンジェロプロス、アレックス; カレン、ベモフスキー(2007年12月4日)。「PowerShellはスマートクォートについてスマートになりました」Windows ITProペントンメディア2013年11月15日取得
  56. ^ 「特殊文字について」Powershell /スクリプティング。Microsoft2017年6月8日2019年6月20日取得
  57. ^ "トラップ[例外] {" PowerShellで "}" 2007年11月28日取得
  58. ^ 「WindowsPowerShellスクリプトの実行」Microsoft2007年11月28日取得
  59. ^ "about_Signing"MicrosoftTechNetMicrosoft2013年10月17日2013年11月15日取得
  60. ^ リーホームズ(2006年9月)。WindowsPowerShellクイックリファレンスオライリーメディア。
  61. ^ eslesar。「WindowsPowerShellの望ましい状態の構成の概要」msdn.microsoft.com
  62. ^ チョン、レナード; ユキカブリ、ジェフリー; クマラヴェル、アルル(2006年11月14日)。「これはラップです!Windows PowerShell 1.0がリリースされました!」WindowsPowerShellブログMicrosoft
  63. ^ 「PowerShellはデフォルトでWindowsServer 08 R2(WS08R2)およびWindows 7(W7)にインストールされます!」WindowsPowerShellブログMicrosoft2008-10-28 2011年9月27日取得
  64. ^ 「Windows管理フレームワークはここにあります!」2009-10-27 2009年10月30日取得
  65. ^ 「Microsoftサポートナレッジベース:Windows管理フレームワーク(Windows PowerShell 2.0、WinRM 2.0、およびBITS 4.0)」Support.microsoft.com。2011-09-23 2011年9月27日取得
  66. ^ 「私たちがW7とWS08R2についてとても誇りに思って楽観的である574の理由」WindowsPowerShellブログMicrosoft2008-10-29 2011年9月27日取得
  67. ^ Snover、Jeffrey(2008)。「PowerShell:管理可能なWebサービスの作成」2008年10月13日にオリジナルからアーカイブされました2015年7月19日取得
  68. ^ 「PowerShell2.0のCTPの新機能」2007年11月28日取得
  69. ^ 「WindowsPowerShellV2コミュニティテクノロジプレビュー2(CTP2)–リリースノート」Microsoft2008年5月6日にオリジナルからアーカイブされました2008年5月5日取得
  70. ^ 「PowerShell1.0とPowerShell2.0の違い」2010年6月26日取得
  71. ^ ジョーンズ、ドン(2010年5月)。「WindowsPowerShell:スクリプトでコマンドレットを作成する」TechNetマガジンマイクロソフト。
  72. ^ 「GoGridスナップイン–PowerShellを使用したクラウドサービスの管理」WindowsPowerShellブログMicrosoft2008-10-14 2011年9月27日取得
  73. ^ 「Emit-XML」WindowsPowerShellブログMicrosoft2008-10-17 2011年9月27日取得
  74. ^ 「V2でコメントをブロックする」WindowsPowerShellブログMicrosoft2008-06-14 2011年9月27日取得
  75. ^ リー、トーマス(2012年8月13日)。「PowerShellバージョン3はRTMです!」階段の下2012年8月13日取得
  76. ^ a bc 「WindowsManagementFramework3.0 ダウンロードセンターMicrosoft2012年9月4日2012年11月8日取得
  77. ^ 「WindowsManagementFramework 3.0 Community Technology Preview(CTP)#2がダウンロード可能」WindowsPowerShellブログMicrosoft2011年12月2日。
  78. ^ 「WindowsManagementFramework3.0」ダウンロードセンターMicrosoft2012年12月3日。
  79. ^ Jofre、JuanPablo(2016年12月14日)。「WindowsPowerShellのシステム要件」Microsoft DeveloperNetworkMicrosoft 2017年4月20日取得
  80. ^ Honeycutt、Jerry(2012)。ウーリー、ヴァレリー(編)。Windows 8の紹介:ITプロフェッショナル向けの概要ワシントン州レドモンド:MicrosoftPressISBN 978-0-7356-7050-1
  81. ^ 「WindowsManagementFramework4.0が利用可能になりました」Microsoft2013年10月24日2013年11月4日取得
  82. ^ Levy、Shay(2013年6月25日)。「WindowsPowerShell4.0の新機能」PowerShellマガジン2013年6月26日取得
  83. ^ 「WindowsServer2012 R2PowerShellでの望ましい状態の構成」チャネル9Microsoft2013年6月3日2013年6月26日取得
  84. ^ ホール、エイドリアン(2013年6月7日)。「MicrosoftTechEdNorthAmericaからの考え」ブログ:ヒントとコツSplunk 2013年6月26日取得
  85. ^ 「WindowsManagementFramework(WMF)5.0RTMパッケージが再公開されました」WindowsPowerShellブログMicrosoft2016年2月24日。
  86. ^ 「QandA」GitHub 2015年4月21日取得
  87. ^ Snover、Jeffrey(2014-04-03)。「WindowsManagementFrameworkV5プレビュー」blogs.technet.comMicrosoft2014年6月30日にオリジナルからアーカイブされまし2015年4月21日取得
  88. ^ は、Jaap Brasser(2016年8月2日)と言います。「#PSTipWindows10 AnniversaryUpdateの新しいPowerShellコマンド」
  89. ^ 「WindowsServer2016 StandardEditionパート9の新機能–管理と自動化」
  90. ^ 「Microsoft.PowerShell.LocalAccountsモジュール」technet.microsoft.com
  91. ^ 「Windows管理フレームワーク(WMF)5.1プレビューの発表」2016年7月16日。
  92. ^ 「WMF5.1」Microsoftダウンロードセンター
  93. ^ Aiello、Joey(2018年1月11日)。「PowerShellCore6.0:一般提供(GA)およびサポートされています!」PowerShellチームブログマイクロソフト。2018年6月11日にオリジナルからアーカイブされました2018年6月11日取得
  94. ^ アイエロ、ジョーイ; ウィーラー、ショーン(2018年1月10日)。「PowerShellコアサポートライフサイクル」MicrosoftDocsMicrosoft
  95. ^ カルボ、エンジェル(2018年1月11日)。「移行する最もエキサイティングな理由トップ10」PowerShellAMAMicrosoft
  96. ^ Aiello、Joey(2018-09-13)。「PowerShellCore6.1の発表」devblogs.microsoft.comMicrosoft 2019年6月1日取得
  97. ^ 「PowerShell / PowerShell」GitHub 2020年6月22日取得
  98. ^ a b c Lee、Steve(2019-04-05)。「PowerShellの次のリリース– PowerShell7」Microsoft 2019年6月1日取得
  99. ^ リー、スティーブ(2019-03-28)。「PowerShellCore6.2の一般提供」devblogs.microsoft.comMicrosoft 2019年6月1日取得
  100. ^ Mackie、カート(2019-05-30)。「MicrosoftがPowerShell7プレビューをリリース」1105 MediaInc 2019年6月1日取得
  101. ^ リー、スティーブ(2019-05-30)。「PowerShell7ロードマップ」devblogs.microsoft.comMicrosoft 2020年8月12日取得
  102. ^ PowerShell7プレビュー5 | パワーシェル
  103. ^ 「PowerShell7.2は、Microsoftの次世代シェルの新しいバージョンであるitsfoss.netです」2021年11月12日。
  104. ^ 「テスト接続」PowerShellドキュメントMicrosoft2015年8月9日。
  105. ^ タールとカールがWindowsに登場!-Microsoft TechCommunity-382409
  106. ^ ウィーラー、ショーン(2020年6月2日)。「スクリプトについて」MicrosoftDocsマイクロソフト。
  107. ^ ウィーラー、ショーン; Smatlak、David; ウィルソン、チェイス(2019年10月16日)。「PowerShellモジュールマニフェストの作成方法」ドキュメントマイクロソフト。
  108. ^ ウィーラー、ショーン; Smatlak、David(2019年11月22日)。「PowerShellスクリプトモジュールの作成方法」MicrosoftDocsマイクロソフト。
  109. ^ ウィーラー、ショーン(2016年11月13日)。「PowerShellバイナリモジュールの作成方法」MicrosoftDocsマイクロソフト。
  110. ^ ウィーラー、ショーン; Jofre、Juan Pablo; Vorobev、Sergei; ニコラエフ、キリル; コールター、デビッド(2020年6月2日)。「Types.ps1xmlについて」MicrosoftDocsマイクロソフト。
  111. ^ ウィーラー、ショーン。「Export-Clixml」MicrosoftDocsマイクロソフト。
  112. ^ ウィーラー、ショーン; Jofre、Juan Pablo; Vorobev、Sergei; ニコラエフ、キリル; コールター、デビッド。「エクスポート-コンソール」MicrosoftDocsマイクロソフト。
  113. ^ ウィーラー、ショーン(2020年6月2日)。「セッション構成ファイルについて」MicrosoftDocsマイクロソフト。
  114. ^ ウィーラー、ショーン(2020年6月2日)。「New-PSRoleCapabilityFile」MicrosoftDocsマイクロソフト。
  115. ^ 「LotusDomino用のMicrosoftTransporterSuite」Microsoft2008年3月7日取得
  116. ^ 「PowerToolsforOpenXML」2008年6月20日取得
  117. ^ 「MO74:WebSphere MQ – WindowsPowerShellライブラリ」2007年12月5日取得
  118. ^ 「IoTコアアドオンのコマンドラインオプション」2020年6月13日取得
  119. ^ 「QuestソフトウェアによるActiveDirectory用のPowerShellコマンド」2008年7月2日取得
  120. ^ 「グループポリシーによるPowerShellリモーティング」2007年12月7日取得
  121. ^ 「VMwarevSpherePowerCLI」2014年9月9日取得
  122. ^ 「WindowsPowerShell:IIS7PowerShellプロバイダーTechPreview2」2008年7月3日取得
  123. ^ 「Win7診断チームへの称賛」2009年6月15日取得
  124. ^ Michael、Niehaus(2009年7月10日)。「MDT2010の新機能#16:PowerShellのサポート」2014年10月27日取得
  125. ^ 「NetAppforData ONTAP PowerShellToolKitへの称賛」2010年6月15日取得
  126. ^ 「PowerShellToolkit4.2のお知らせ」2016年6月23日2016年9月7日取得
  127. ^ 「PowerShellを使用した異種ジョブスケジューリング」2010年9月15日取得
  128. ^ 「UIAutomationPowerShell拡張機能」2012年2月16日取得
  129. ^ 「PowerShellを使用したEqualLogicHIT-ME」2012年3月9日取得
  130. ^ de:LOGINventory
  131. ^ 「SeleniumPowerShell拡張機能」2012年8月20日取得
  132. ^ 「パッシュ」SourceForgeDice Holdings、Inc. 2011年9月27日取得
  133. ^ 「PashProject」GitHub2013年4月10日取得
  134. ^ 「Pashは廃止されました・Issue#429・Pash-Project / Pash」GitHub 2019年11月26日取得

さらに読む

外部リンク