コンピュータ ウィンドウズ インターネット

パワーシェルの説明。 PowerShell とは何ですか? PowerShell の使用を開始する

2014 年 11 月 5 日午後 8 時 07 分

PowerShell でのジャンプ スタート (パート I)

  • システム管理、
  • パワーシェル
  • チュートリアル

自動化のみ。 PowerShell のみ。

序文

趣味として、時間があるときは、UKIT (旧モスクワ州立情報技術大学) で学生に教えています。 現時点では、学生グループに割く時間はほとんどありませんが、ハブレについてここに投稿を準備するだけで十分です。

私は、IT リソースを豊富に備えた大規模な非 IT 企業でシステム管理者として働いています。 アクティビティの種類別に見ると、ユーザーにサービスを提供するための同様のタスクを多数解決しているようです。

私は約 2 年前に PowerShell 言語を知りましたが、本格的に使い始めたのはわずか 1 年後で、最初はその膨大な機能に気づきませんでした。 この記事では、まず、PowerShell を使い始めたいが、まだ PowerShell を信頼していないか、この奇跡にどのようにアプローチすればよいかわからない人に焦点を当てます。

警告: PowerShell には中毒性があります。

導入

ウィキペディアには次のように書かれています。
Windows PowerShell- の拡張可能な自動化ツール マイクロソフト、コマンドライン シェルとそれに付随するスクリプト言語で構成されます。

PowerShell 環境はコマンド ラインのようになります。


powershell.exe

またはアプリケーションとして:


powershell_ise.exe

Powershell_ise.exeこれは、統合スクリプト環境 - Windows PowerShell ISE と呼ばれます。 構文の強調表示、コマンド コンストラクター、Tab キーを押すことによるコマンドの自動補完、その他の機能を備えた便利な環境で言語を操作できます。 スクリプトの作成とテストに最適です。

環境を開始するには powershell.exeまたは powershell_ise.exe実行行に同じ名前を入力するだけです。

PowerShell スクリプト ファイルの拡張子は次のとおりです。 .ps1.

スクリプトは LMB を 2 回押しても起動できません。 これは、誤って起動されたスクリプトによってシステムに害を及ぼさないようにするために特別に行われます。

実行するには、右クリックして「PowerShell を使用して実行」を選択します。

LMB スクリプトの実行には制限があることに加えて、システムに害を与えないという上記の理由により、システム内でのスクリプトの実行はデフォルトで禁止されています。 現在の実行ポリシーを確認するには、次のコマンドを実行します。

実行ポリシーの取得

次のいずれかの値を取得します。 これが最初の起動であれば、高い確率で、 制限付き.

  • 制限付き- スクリプトは実行できません。
  • すべて署名済み- 信頼できる発行者によって署名されたスクリプトのみを実行できます。 信頼された発行元スクリプトを実行する前に確認が要求されます。
  • リモート署名済み- 当社が作成したスクリプト、および信頼できる発行元によって署名されてダウンロードされたスクリプトの実行が許可されます。
  • 無制限- 制限はなく、すべてのスクリプトを実行できます。

実行とテストの場合は、ポリシーを次のように下げます。 リモート署名済み次のコマンドを実行します。

Set-ExecutionPolicy RemoteSigned

始めましょう

コマンドレット
  • コマンドレットは、さまざまな機能を含む PowerShell コマンドです。
  • コマンドレットはシステムまたはユーザーが作成できます。
  • コマンドレットは動詞と名詞のルールに従って名前が付けられているため、覚えやすくなっています。
  • コマンドレットは結果をオブジェクトまたはオブジェクトのコレクションとして出力します。
  • コマンドレットは、処理するデータを受信することも、パイプラインを介してデータを送信することもできます (パイプラインについては後ほど説明します)。
  • コマンドレットでは大文字と小文字が区別されません (get-process、Get-Process、および GeT-pRoCeSs を記述できます)。
  • コマンドレットの後に「」を置く必要はありません ; ただし、複数のコマンドレットを 1 行で実行する場合 (Get-Process; Get-Services) は除きます。

たとえば、現在のプロセスを取得するには、次のコマンドを実行します。

そして結果が得られます:

自分で試してみてください:

Get-Service #コンピューター上で実行されているサービスのステータスを取得します

Get-Content C:\Windows\System32\drivers\etc\hosts #ファイルのコンテンツを取得します。 この場合、hosts ファイルは

すべてのコマンドレットを暗記する必要はありません。 助けを得ます状況を救ってくれるでしょう。
次のコマンドを実行すると、使用可能なすべてのコマンドレットに関する情報を取得できます。

Get-Help -Category コマンドレット

PowerShell ISE を使用すると、開発プロセスが容易になります。
ダッシュを入力してください。」 - " コマンドレットを入力すると、パラメーターとその型について考えられるすべてのオプションが取得されます。

試す:

Get-Service -Name p*

ただし、このコマンドレットまたはそのコマンドレットにどのようなプロパティがあるかを忘れた場合は、それを実行します。 メンバーの取得:

取得プロセス | Get-Member #Sign "|" コンベアと呼ばれます。 彼については以下。

情報が足りませんか? パラメータのヘルプを参照してみましょう -例:

Get-Help Get-Process -例

説明を受けます 取得プロセス、さらに使用例もあります。

  • コマンドレットには短縮名、つまりエイリアスを付けることができます。 たとえば、代わりに 助けを得ます簡単に使用できます ヘルプ。 すべての略語を取得するには、次を実行します。 エイリアスの取得.

試す:

開始プロセスのメモ帳

これは次のように書くのと似ています。

メモ帳を起動する

ここでプロセスを停止しましょう。

プロセスの停止 - 名前のメモ帳

Spps -名前メモ帳

先ほど、コマンドレットの名前は動詞と名詞の規則に従って付けられると述べました。 動詞は必ずしもそうである必要はないことを明確にさせてください。 得る。 受け取ることができるものに加えて、次のことを尋ねることもできます セット(Set-ExecutionPolicy を思い出してください)、実行します 始める、 停止 停止、出力 、 作成する 新しい他にもたくさんあります。 コマンドレットの名前には制限がなく、独自のコマンドレットを作成する場合は、好きな名前を付けることができます。

ファイルに出力してみましょう。

「こんにちは、ハブル!」 | 出力ファイル C:\test.txt および C:\test.txt

ちなみに、こんな感じで書くこともできます。

「こんにちは、ハブル!」 > C:\test.txt および C:\test.txt

コマンド プロンプトについては多くのユーザーが知っていますが、Windows PowerShell について聞いたことがあるユーザーはほとんどありません。 ある意味、PowerShell はコマンド ラインを置き換え、Windows オペレーティング システムを管理するためのより強力な機能を提供することを目的としたツールです。 この記事では、このツールが何であるか、なぜ非常に強力なのか、誰が最も頻繁に使用する傾向があるのか​​を明確に説明します。

PowerShell とは何ですか?

よりよく理解するには、まずシェルとは何かを理解する必要があります。 コンピューター サイエンスにおいて、シェルはさまざまなオペレーティング システム サービスへのアクセスを提供するユーザー インターフェイスです。 シェルはコマンド ライン ベースである場合もあれば、グラフィカル ユーザー インターフェイス (GUI) を含む場合もあります。

Windows PowerShell は、タスクの自動化と構成管理を目的として Microsoft によって開発されたシェルです。 この強力なシェルは .NET Framework に基づいており、コマンド ライン シェルとスクリプト言語が含まれています。

標準のコマンド ライン シェルの上に Windows PowerShell ISE が存在する場合もあります。 ISE は、統合スクリプト環境として機能します。これは、コマンド ラインにすべてのコマンドを入力しなくても、さまざまなスクリプトを作成できるグラフィカル ユーザー インターフェイスです。

PowerShell の最初のバージョンは、2006 年 11 月に Windows XP、Windows Server 2003、および Windows Vista 向けにリリースされました。 最新のものは、2013 年 10 月にリリースされたバージョン 4.0 です。これは、Windows 8.1 および Windows Server 2012 R2 にデフォルトで付属しています。

PowerShell では何ができるのでしょうか?

Microsoft は、多くの面倒な管理タスクを自動化し、迅速に解決するのに役立つツールとして Windows PowerShell を開発しました。 たとえば、PowerShell を使用して、ネットワーク上の 1 つ以上のコンピューターにインストールされているすべての USB デバイスを表示したり、他の作業を行っている間にバックグラウンドで実行される時間のかかるタスクを設定したりできます。 応答していないプロセスを特定して終了したり、ネットワーク上のコンピュータに関する特定の情報をフィルタリングして HTML 形式でエクスポートしたりすることもできます。

PowerShell の機能を使用すると、スクリプトを作成し、複数のコマンドを組み合わせることで、時間のかかる反復的なタスクを簡素化および自動化できます。

ネットワーク管理者であれば、Active Directory を操作するときに PowerShell が非常に便利であることがわかります。 このツールにはコマンドレットと呼ばれるカスタマイズ可能なコマンドが何百も含まれていることを考慮すると、PowerShell が生産性の向上に役立つ可能性は非常に高くなります。

Windows 8.1 で PowerShell を実行するにはどうすればよいですか?

スタート画面に PowerShell タイルがない場合、またはデスクトップにショートカットがない場合は、検索を使用して開くことができます。これは最も簡単な方法の 1 つです。 +Q を押し、「powershell」と入力して Enter を押します。

スタート画面のアプリ セクションから PowerShell を開くこともできます。スタート画面に移動し、カーソルを左下隅、最初の列の最後のタイルのすぐ下に移動します。 下向き矢印のアイコンをクリックします。 次に、「ユーティリティ」セクションの PowerShell アイコンをクリックします。

[ファイル名を指定して実行] ダイアログを使用して PowerShell を開くには、+R を押し、「powershell」と入力して Enter を押します。

Windows 7 で PowerShell を実行するにはどうすればよいですか?

Windows 7 では、スタート メニューで「powershell」を検索するとツールを見つけることができます。

[アクセサリ] セクションの [スタート] メニューから PowerShell を開くこともできます。

明らかに、[ファイル名を指定して実行] ウィンドウの上記のコマンドは Windows 7 でも同様に機能します。

普段 PowerShell を使用しているのは誰ですか?

多くの IT 管理者が PowerShell を選択していることは疑いの余地がありません。 それには十分な理由があります。このツールにより、管理操作が大幅に簡素化され、大規模な企業ネットワークの作業量が削減されるからです。

500 台を超えるサーバーを含む大規模なネットワークを管理しており、それらのサーバー上で実行する必要があるサービスに依存する新しいセキュリティ ソリューションを実装する必要があるとします。 もちろん、各サーバーに接続して、必要なサービスがインストールされ、実行されているかどうかを確認できます。 ただし、この場合、タスクを完了するまでに時間がかかりすぎるため、管理者が満足する可能性は低くなります。

PowerShell を使用すると、指定したサーバー上で実行されているサービスに関する情報を収集し、それをテキスト ファイルとして保存する単一のスクリプトで操作全体を実行できるため、このジョブを数分以内に実行できます。

PowerShell を使用すると、1 つの記事で説明できる以上のことができるため、本当に興味がある場合は、このツールの機能について説明した多くの書籍を購入して読むことを強くお勧めします。

すてきな一日を!

この記事では、Microsoft の次のようなテクノロジについて説明します。 Windows PowerShellでは、PowerShell とは何か、コマンドレットとパイプラインとは何か、スクリプトとモジュールの作成方法について説明し、Windows PowerShell の他の同様に重要で便利な機能についても触れます。

Windows PowerShell の出現に何が寄与したのでしょうか?

PowerShell が登場する前には、( そしてそこにあります) サービスの自動化と管理のための次のツール: Windows コマンド ラインと Windows スクリプト ホスト。 しかし、これらのテクノロジーには欠点もあります。

Windows コマンド ラインには、いくつかの管理タスクを実行する機能や、アクションのアルゴリズムを記録してスクリプト (bat ファイル) として保存する機能もあります。また、変数、条件構文などの特定のプログラミング要素を使用することもできます。そしてサイクルのようなものさえあります。

ほとんどのソフトウェア製品にはコンソール インターフェイスがあります。 コマンド ラインを使用してプログラムを制御できると同時に、グラフィカル インターフェイスの実行コストがかからないためリソースを節約できます。 Microsoft は、Windows Server サーバー オペレーティング システム ( Server Core、Windows Server 2016 には Nano Server も搭載) しかし、コマンドラインの機能には制限があるため、これだけでは十分ではありません。 何かを自動化するための複雑なロジックを書くことはできませんし、たとえできるとしても、時間と知識が必要になります。

また、コマンド ラインの欠点は、サーバーを完全に管理するためにソフトウェア製品のさまざまなコンソール ユーティリティを使用するため、これらすべてのユーティリティの機能が異なるという観点から、管理にコマンド ラインを使用するのは実際には困難であることです。構文、パラメータ、使用方法、および典型的なタスクを実行するための方法。 毎日、これらすべてをメモリに保存しておく必要があり、特殊なタスクを実行するには、まずヘルプまたはドキュメントを読む必要があります。

Windows Script Host テクノロジを使用すると、WSH スクリプトを作成することによる自動化を含む、すべての管理タスクをコマンド ラインとして実行できますが、ここではすでに本格的なプログラミング言語を使用できます ( VBScript と JScript)、つまり 複雑なロジックとアルゴリズムを実装できます。 さらに、WSH の助けを借りて、オブジェクト インターフェイスを通じてソフトウェア製品を管理します。つまり、Windows Script Host はさらに優れています。 クーラー» コマンドラインよりも。 しかし、このテクノロジは、システム管理者にとってこの管理を管理および自動化するための理想的なツールにはなりませんでした。Windows Script Host では上記のプログラミング言語の知識が必要であり、実際にはシステム管理者にとっては不必要だからです。 管理者は、一部のアクションをプログラムできる機能を備えた単純な管理ツールのみが必要であり、VBScript および JScript プログラミング言語のソフトウェア製品のオブジェクト モデルを深く掘り下げる必要はありません。

その結果、Microsoft は、管理機能と自動化機能、および利便性と使いやすさの両方の点で、システム管理者のすべてのニーズを 100% 満たすシステム管理者向けの管理ツールを開発する必要があり、そこで Windows PowerShell が登場しました。

Windows PowerShell とは何ですか?

Windows PowerShell Windows オペレーティング システムの管理と構成のために設計された Windows スクリプト言語およびコマンド シェルです。 PowerShell は CRL フレームワークと .NET Framework の上に構築されており、テキストを受け取って返すコマンド ラインとは異なり、Windows PowerShell はオブジェクトを操作します。 PowerShell の各オブジェクトには、それらのオブジェクトを操作するために使用できるプロパティとメソッドがあります。

Windows PowerShell では、Microsoft がコマンドレットの概念を開発しました ( コマンドレット)、これはコマンド命名システムです。 動詞名詞」 このシステムにより、システム管理者は PowerShell の操作を迅速に習得し、簡素化できます。

Windows PowerShell を使用すると、次のことが可能になります。

  • ファイル システムにアクセスします。
  • レジストリを管理します。
  • サービスを管理する。
  • プロセスを管理する。
  • オペレーティング システムを構成します。
  • ソフトウェアをインストールする;
  • サーバーの役割とコンポーネントをインストールします。
  • サーバーの役割とコンポーネントを管理および構成します。
  • 管理と管理を自動化するスクリプトを作成して使用します。
  • 他のシステム管理者のタスクを実行します。

Windows PowerShell には、ipconfig、ping など、コマンド ラインから実行できる一般的に使用されるユーティリティとコマンドが多数含まれています。 これは、システム管理者がコマンド ラインから PowerShell に移行しやすくするために行われました。

また、便宜上、PowerShell で頻繁に使用されるコマンドとユーティリティの多くには同義語が付いています ( エイリアス)、たとえば、cls は Clear-Host コマンドレットの同義語であり、dir は Get-ChildItem ( 同義語の完全なリストは、Get-Alias コマンドレットを実行することで表示できます。).

目的のコマンドの検索を簡素化するために、PowerShell には動詞と名詞の両方で検索できる特別なコマンドレット Get-Command があります。 Windows PowerShell のすべてのコマンドはモジュールにグループ化されています ( 例: Hyper-V、NetTCPIP)、これにより、適切なコマンドを見つけやすくなります。

必要なコマンドが見つかったら、このコマンドを使用するための手順を確認できます。 ヘルプには、これらの目的のための特別な Get-Help コマンドレットがあります。たとえば、次のコマンドは Get-Command コマンドレットのヘルプを表示します。

ヘルプを取得、コマンドを取得

Windows PowerShell のヘルプは短くて詳細なものにすることができます ( パラメータ - 詳細)、 満杯 ( パラメータ - フル)、例のみを表示することもできます( パラメータ - 例)。 次のコマンドは、Get-Command コマンドレットの使用例のみを示しています。

Get-Help Get-Command - 例

PowerShell ヘルプは更新可能です。 Update-Help コマンドを使用して更新できます。

Windows PowerShell のバージョン

PowerShell 1.0 の最初のバージョンは 2006 年 11 月 14 日に登場し、Windows XP Service Pack 2、Windows Server 2003 Service Pack 1、および Windows Vista の Windows オペレーティング システムのバージョンにインストールできる個別のディストリビューションとしてリリースされました。

Windows Server 2008 では、PowerShell 1.0 もインストールする必要があるコンポーネントとして付属していました。

Windows 7 および Windows Server 2008 R2 以降、PowerShell はシステムの不可欠なコンポーネントとして付属しています ( それらの。 プリインストールされているため、インストールする必要はありません)。 以下は、PowerShell のバージョンと Windows オペレーティング システムのバージョンの対応表です ( それらの。 Windows のどのバージョンにデフォルトでインストールされる PowerShell のバージョン):

PowerShellのバージョン Windowsのバージョン
パワーシェル2.0 Windows 7、Windows Server 2008 R2
パワーシェル 3.0 Windows 8、Windows Server 2012
パワーシェル4.0 Windows 8.1、Windows Server 2012 R2
パワーシェル5.0 Windows 10、Windows Server 2016

新しいバージョンが登場するたびに、PowerShell はますます強力な管理ツールになっていきます。比較のために、最初の PowerShell には約 130 個のコマンドレットがありましたが、PowerShell 5.0 ではすでに 600 個以上になっています。

PowerShell の現在のバージョンは、$PSVersionTable 組み込み変数の PSVersion プロパティを使用して確認できます。たとえば、次のコマンドを実行します。

$PSVersionTable.PSVersion

またはコマンドレットを実行します

Get-Variable -Name PSVersionTable –ValueOnly

ここで、PSVersion 値は PowerShell バージョンになります。

PowerShell言語

パワーシェルオブジェクト指向のスクリプト プログラミング言語です。 これは、Windows PowerShell で Windows オペレーティング システムのすべてのコンポーネントを制御するコマンドを作成したり、Windows PowerShell 統合スクリプト環境 (ISE) で管理タスクを自動化するスクリプトを作成したりするために使用されます。 PowerShell 言語は管理タスク用に作成されましたが、条件、ループ、エラー処理、変数、オブジェクトの操作、および配列。

PowerShell 言語には、コマンドを記述するための統一された構文と、「」の原則に基づいたこれらのコマンドの命名構造があります。 動詞名詞" これにより、この言語はプログラマとシステム管理者の両方にとって直感的になります。

Windows PowerShell

Windows PowerShell PowerShell でコマンドやスクリプトを実行するための環境です。 このシェルには、コマンド実行履歴の保存、シェルの外観のカスタマイズ、Ctrl+C キーの組み合わせによるコマンド実行の完了など、コマンド ラインと同じ機能が備わっています。また、このシェルには存在しない他の多くの機能もあります。コマンドラインシェル、例えば「 構文の強調表示» ( PowerShell 5.0で導入されました).

PowerShell を起動するには、次のような方法があります。

  • コマンドラインから「PowerShell」と入力します。
  • ダイアログボックスを通じて「 実行する» ( キーボード ショートカット Win+R)、PowerShell も入力します。
  • Windows 7 の場合 - [スタート] -> [すべてのプログラム] -> [アクセサリ] -> [Windows PowerShell] -> [Windows PowerShell] をクリックします。
  • Windows 8.1 または Windows Server 2012 R2 の場合 - [スタート] -> [すべてのプログラム] -> [システム ツール] -> [Windows PowerShell]。
  • Windows 10 または Windows Server 2016 の場合 - [スタート] -> [すべてのプログラム] -> [Windows PowerShell ディレクトリ] ( グループWで) -> Windows PowerShell。

Windows Server 2016 での PowerShell の実行例

Windows Server 2016 の PowerShell のスクリーンショット

PowerShell のコマンドレット

コマンドレット (コマンドレット) は、オペレーティング システム オブジェクトと対話してオブジェクトを管理できるようにする Windows PowerShell コマンドです。 これらのコマンドは PowerShell 言語の一部です。 コマンドレットは「」という原則に従って構築されます。 動詞名詞"、ハイフン (-) で区切ります。 つまり、最初に何をするかを示し、ハイフンで何をするかを示します。 たとえば、Get-Help コマンドレットの場合、Get は「」を意味する動詞です。 得る「そしてヘルプは名詞です」 ヘルプ「PowerShellのコンテキストで」 表示 – ヘルプ」 PowerShell コマンドレットは結果をオブジェクトとして返します。これが、コマンドが画面にテキストのみを返す Windows コマンド プロンプトとの主な違いの 1 つです。

データを取得するためのコマンドレット (Get) に加えて、次のような種類のコマンドレットもあります。

  • 追加 - データを追加します。
  • クリア – クリア;
  • 有効にする - 有効にする。
  • 無効にする - オフにします。
  • 新規 – 作成します。
  • 削除 – 削除します。
  • セット – セット;
  • 開始 - 開始;
  • 停止 – 停止。
  • 輸出 – 輸出。
  • インポート – インポート;
  • などなど。

Windows PowerShell のコマンドレットの完全なリストは、特別な Get-Command コマンドレットを使用して表示できます。 たとえば、-CommandType コマンドレット パラメーターを指定して実行すると、コマンドレットのリストが画面に表示されます。

Get-Command -CommandType コマンドレット

すでに理解したように、コマンドレットにはコマンドレットのアクションを指定できるパラメーターがあります。 パラメーターは必須またはオプションの場合があります。たとえば、Get-Command コマンドレットには必須パラメーターがありません。

以下の図は、動詞 ( 動詞パラメータ)。 この例では、何かを再起動できるコマンドレットのリストを表示しました。

チーム

Get-Command -動詞 Restart

名詞でコマンドレットを検索するには、Noun パラメーターを使用する必要があります。 たとえば、以下にサービスで動作するコマンドレットのリストを示します。

チーム

Get-Command -名詞サービス

完全な名前で目的のコマンドレットが見つからない場合は、*Text* 形式のマスクを使用できます。

PowerShell のパイプライン

Windows PowerShell の主な機能の 1 つは、コマンドの実行時にパイプラインを使用できることです。

コンベア– これは、垂直バー (|) を介してコマンドレットの結果を別のコマンドレットに転送することです。 同時に、ご存知のとおり、PowerShell コマンドレットはオブジェクトを操作してオブジェクトを返します。したがって、オブジェクトもパイプラインに沿って転送されます。

パイプラインを使用すると、複雑なアルゴリズムやスクリプトを作成することなく、複雑なタスクを簡単かつ便利な方法で実行できます。

たとえば、ディレクトリ "C:\Windows\System32" 内の最大のファイルの名前を調べてみましょう ( パイプラインの簡単な例).

チーム

Get-ChildItem -Path "C:\Windows\System32" -ファイル | 並べ替え - オブジェクトの長さ - 降順 | オブジェクトの選択 - 最初の 1

  • Get-ChildItem – 指定されたディレクトリ内のオブジェクトを取得するためのコマンドレット。
  • Sort-Object はオブジェクトを並べ替えるためのコマンドレットです。この場合はファイル サイズで並べ替えます ( 長さ - 降順);
  • Select-Object は、オブジェクトの必要なプロパティを選択するためのコマンドレットです。この場合、標準フィールドと最初のオブジェクトのみを表示します。 大きなファイル ( パラメータ - 最初の 1).

すべてのコマンドレットは縦棒で区切られています。 各コマンドレットの結果は、入力として別のコマンドレットに渡されます。 まず、指定されたディレクトリ内のすべてのオブジェクトを取得し、次に結果を並べ替えて、最後に最初のオブジェクトを選択します。

タスクのバックグラウンド実行

Windows PowerShell には、バックグラウンドでジョブを実行する機能があります。これは、コマンドを実行できるメカニズムです ( たとえば、完了までに長い時間がかかる) バックグラウンドで、つまり 起動後、現在のセッションに戻り、コマンドの終了を待たずに作業を続けることができます。 この機能は、完了までに非常に長い時間がかかるコマンドを実行する必要がある場合に必要になります。ご存知のとおり、この間、PowerShell セッションはコマンドが完了するまでブロックされ、作業を続行する必要があります。

バックグラウンドで実行されているすべてのタスクを管理できます。たとえば、タスクのリストの表示、タスクの停止、タスクの削除、そしてもちろんタスクの結果の表示などを行うことができます。

Windows PowerShell には、バックグラウンド ジョブを操作するための次のコマンドレットがあります。

  • Start-Job – バックグラウンド タスクを開始します。
  • Stop-Job – バックグラウンド タスクを停止します
  • Get-Job – バックグラウンド タスクのリストを表示します。
  • Receive-Job – バックグラウンド タスクの結果を表示します。
  • Remove-Job – バックグラウンド タスクを削除します。
  • Wait-Job – バックグラウンド タスクをフォアグラウンドに移動して、完了を待ちます。

バックグラウンドで実行するには、Start-Job コマンドを記述し、中括弧 () 内にバックグラウンドで実行するコマンドまたはコマンドのセットを記述する必要があります。

たとえば、いくつかのタスクを実行してみましょう( サービスのリストを表示) バックグラウンドで実行し、バックグラウンド ジョブのリストを見て、ジョブの結果を表示します ( それらの。 サービス一覧).

バックグラウンドでタスクを実行する

ジョブの開始 (Get-Service)

バックグラウンドで実行されているタスクのリストを確認します

Job1の結果を表示する

受信ジョブ Job1

ご覧のとおり、ステータスが「」のタスクができました。 完了"、つまり すでに完了しています( Get-Service はすぐに機能します).

バックグラウンドタスクの結果を確認するには、つまり、 Get-Service コマンドレットでは、Receive-Job コマンドを実行し、ジョブ名を渡しました ( 識別子の値も可能です)。 その結果、サービスの一覧が表示されました。

PowerShellを使用したリモート制御

Windows PowerShell は、ローカルで使用するだけでなく、リモートでコマンドを実行できるように設計されています。 この機能は、職場からリモート コンピュータを制御できるようにするために必要です。 PowerShell コマンドを実行します。

リモートコントロールにはいくつかの方法があります。

  • パラメータの使用 -コンピュータネーム (多くのチームがそれを持っています)。 つまり、コマンドを実行するコンピューターの名前をパラメーターとして渡します。 この方法には、1 つのコマンドの実行に限定されるという欠点があります。
  • セッションの使用。 コマンドレット PSSession に入る (インタラクティブセッション)。 このようにして、リモート コンピューターに接続すると、PowerShell に入力したすべてのコマンドは、リモート コンピューターにコマンドを直接入力した場合と同じ方法でリモート コンピューター上で実行されます。 この方法には、セッションが 1 台のコンピュータに限定されるという欠点もあります。
  • コマンドレットの使用 呼び出しコマンド。 この方法を使用すると、1 台または複数のコンピューターでコマンドまたはスクリプトを実行できます。

たとえば、リモート コンピュータに接続するには ( 以下の例では ServerName) 対話型セッションで、次のコマンドを実行します。

PSSession サーバー名を入力してください

Windows PowerShell のスクリプト、関数、およびモジュール

アルゴリズムを作成した場合は、将来使用するためにそれを保存したいと思うでしょう。 Windows PowerShell には、この目的のためのスクリプト メカニズムが備わっています。

このメカニズムの本質は次のとおりです。必要なコマンドのセットを記述し、それをスクリプトとして保存します。これは拡張子 .PS1 を持つ単純なテキスト ファイルです。

次に、このスクリプトを実行するには、PowerShell で実行するだけです。 この場合、スクリプト ファイルへのフル パスを指定するか、スクリプトのあるディレクトリに移動して名前で呼び出す必要があります。

重要!

デフォルトでは、Windows でのスクリプトの実行は禁止されています。 スクリプト実行ポリシーを表示するには、コマンドレットを実行します。 実行ポリシーの取得。 その結果、次のような現在のポリシーが返されます。

  • 制限付き - スクリプトの実行はブロックされます ( デフォルト値);
  • AllSigned – デジタル署名のあるスクリプトの実行が許可されます。
  • RemoteSigned – ローカル スクリプトの実行が許可されます。ダウンロードされたすべてのスクリプトにはデジタル署名が必要です。
  • 制限なし - あらゆるスクリプトの実行が許可されます ( 危険なのでお勧めしません!).

スクリプトの実行を有効にするには、コマンドレットを使用する必要があります。 実行ポリシーの設定上記のパラメータのいずれかを使用します。

たとえば、ローカル スクリプトの実行を許可するには、次のコマンドを実行し、Y を押して変更を受け入れます。

Set-ExecutionPolicy RemoteSigned

パラメータをスクリプトに渡したり、パラメータを必須にしたり、デフォルト値を設定したりできます。

Windows PowerShell は、組み込みコマンドレットと同様に、PowerShell シェルで使用できる独自の関数を作成するためのメカニズムを提供します。

これを行うには、Function キーワードを指定し、この関数を操作するためのアルゴリズムを中括弧 () で囲んで記述する必要があります。 コマンドセット( たとえば、頻繁に使用される手順: 特定の権限を持つユーザーを作成する、特定のディレクトリを削除するなど)。 次に、これらすべてをスクリプトに保存する必要がありますが、このファイルはすでにモジュールになっているため、拡張子 .psm1 のみを付けます。

それだけではありません。このファイルは、PowerShell がモジュールを検索するディレクトリに配置する必要があります。 このようなディレクトリがいくつかあります ( ユーザー プロファイル内の特別なディレクトリ、PowerShell がインストールされているディレクトリ)、PowerShell 環境変数で表示できます。 これを行うには、次のコマンドを実行します

Get-ChildItem Env:\PSModulePath | フォーマットテーブル -AutoSize

作成したモジュールを特別なディレクトリに配置すると、通常の PowerShell コマンドとして関数にアクセスできるようになります。

Windows PowerShell 統合スクリプト環境 (ISE)

スクリプト、関数、およびそれに応じてモジュールの作成を容易にするために、Microsoft は特別なグラフィカル プログラムを開発しました。 統合スクリプト環境(ISE) - 統合スクリプト環境。 このプログラムで作業するのは非常に便利で、強力な機能もあります ( スクリプト、出力領域、組み込みデバッガなどを含む複数のタブの作成).

次のように実行できます。

  • Windows 7 の場合 - [スタート] -> [すべてのプログラム] -> [アクセサリ] -> [Windows PowerShell] -> [Windows PowerShell ISE]
  • Windows 10 または Windows Server 2016 の場合 - [スタート] -> [すべてのプログラム] -> [Windows PowerShell ディレクトリ] ( グループWで) -> Windows PowerShell ISE。

注記! ISE は、Server Core エディションにインストールされた Windows Server システムでは実行できません。

Windows Server 2016 の PowerShell 統合スクリプト環境 (ISE) のスクリーンショット

以上です。この資料がお役に立てば幸いです。 幸運を!

Windows PowerShell は、Windows システム管理者にとって重要なツールの 1 つです。 PowerShell は無視すべきではない強力なツールです。 この記事は、Windows PowerShell の基本的なスキルを提供することを目的としています。

PowerShell は単なるコマンド ライン シェルではありません。 PowerShell の最初のバージョンは 2006 年に登場しましたが、その開発の理由は、複雑なアルゴリズムを実行できない古典的な Windows コマンド ラインの原始性でした。

Windows PowerShell は、Windows 7、8、8.1、Windows Server 2008 R2、2012 R2 にプリインストールされており、Windows XP SP3、Vista、および Windows Server 2003 SP2 に追加することもできます。 PowerShell インターフェイスは、よく知られたコマンド ライン インターフェイスに似ています。


Windows PowerShell インターフェイス

前述したように、問題はコマンド ライン インターフェイスに限定されません。 PowerShell は、複雑なアクションを自動化できる独自のスクリプト言語をシステム管理者に提供します。

PowerShell で実行するコマンドは、コマンドレット、関数、スクリプト、外部実行可能ファイルの形式にすることができます。

コマンドレット は、PowerShell に組み込まれた新しいコマンド タイプです。 このタイプのコマンドは DLL ライブラリにコンパイルされ、PowerShell プロセスの開始時にロードされます。 コマンドレット自体はアプリケーションとして実行されません。

コマンドレット名がパターンと一致する "動詞名詞"。 動詞は実行したいアクションを表し、名詞はアクションが実行されるオブジェクトを表します。 たとえば、コンソール画面をクリアするには、Clear-Host コマンドを入力する必要があります。 コンソールで「Get-Command」と入力すると、使用可能なコマンドを表示できます。

コマンドレットにはパラメーターを含めることができます。 一般的には次のようになります。

コマンドレット名 -パラメータ1 -パラメータ2 引数1 引数2

引数は名前のないパラメータです。

使い方? たとえば、ディレクトリの内容を表示する dir コマンドがあります。

dirコマンドの例

あるファイルを紛失したとします。 これを Photoshop のヘルプ ファイルとします。 ファイル名に「photoshop」が含まれていて、pdf ファイルだったと記憶しています。 私の記憶では、ファイルはこのディレクトリにありました。 上記の例のように、ディレクトリ内のすべてのファイルを一覧表示し、ファイルを手動で検索できます。 または、-filter パラメーターを使用すると、特定の引数に一致するファイルのみが表示されます。 引数は *photoshop*.pdf になります。 「photoshop」という単語の周りにアスタリスクが付いているのは、ファイルの正確な名前を覚えておらず、「photoshop」の前後に任意の文字を含めることができると PowerShell に指示しているためです。 また、PDF ファイルを探すように指示します。

探していたファイルが見つかりました。 コマンドレットの一般的なビューでは、1 つのコマンドレットに複数のパラメーターを含めることができることが示されました。 また、パラメーターには常に引数があるとは限りません。

例を少し複雑にしてみましょう。 今、クリストファー・ドハティの本を探す必要があるとしましょう。 チーム dir -filter *dougherty*.pdf私に何もくれませんでした。 これは、その本がこのディレクトリにないことを意味しますが、ここのどこか、明らかにサブディレクトリにあることは確かに覚えています。 サブディレクトリ内を検索するには、-recurse パラメータを追加します。

検索に少し時間はかかりますが、探している本は見つかります。

ご覧のとおり、-recurse パラメーターには引数が含まれていません。 パラメーター自体は任意の順序で指定できますが、重要なのは、必要な引数が目的のパラメーターの後に来る場合のロジックに厳密に従うことです。 したがって、コマンドは dir -filter *dougherty*.pdf -recurseと全く同じように動作します dir -recurse -filter *dougherty*.pdf.

パラメータ名は短縮形で記述できるため、コマンド ラインを使用した日常的な作業に非常に便利です。 略語は通訳者が理解できるものでなければなりません。 二重の解釈を許さないでください。 たとえば、 -recurse パラメータを単純な -r に短縮できますが、 -filter を -f に短縮するとエラーが発生します。 -force パラメータもあります。 この場合、 -filter を -fi に短縮できます。

これで、コマンドレットについてのアイデアが得られました。 次回 。