初心者向けの Powershell チュートリアル
⚡ スマートサマリー
PowerShell スクリプトは、.NET フレームワーク上に構築されたオブジェクト指向の自動化エンジンです。コマンドレット、スクリプト、スクリプト言語を組み合わせて、IT 管理者が自動化を行うのに役立ちます。 Windowsサービスを管理し、単一のコマンドラインからリモートマシンに接続できます。

PowerShellとは何ですか?
Windows PowerShellの オブジェクト指向の自動化エンジンおよびスクリプト言語です。IT プロフェッショナルやシステム管理者向けに設計されており、 Windows およびその他のアプリケーション。PowerShell は、 Windows コマンドプロンプトと Windows 新しいオブジェクト、コマンドレット、そして強力なパイプラインを備えたスクリプトホスト。
PowerShellは、スクリプトの柔軟性、コマンドラインのスピード、そしてGUI管理ツールの奥深さを兼ね備えています。これを使えば、管理者は効率的に問題を解決し、何時間もの手作業を削減できます。このチュートリアルでは、PowerShellをゼロから学ぶために必要な基本事項を解説します。
PowerShellを使う理由とは?
PowerShellを使用する最も重要な理由は以下のとおりです。
- オペレーティングシステムに高度に統合されたコマンドライン環境を提供します。
- .NETフレームワーク内のすべての型への完全なアクセスを提供します。
- 企業全体のシステム管理者から信頼されています。
- 数行のコードでサーバーやワークステーションのコンポーネントを操作できます。
- システム管理者向けに、簡潔な動詞+名詞構文で記述されています。
- ランニングよりも安全 VBScript または、その他の旧来のスクリプト言語。
PowerShell の歴史
PowerShell 1.0は2006年に初めてリリースされました。PowerShellは現在バージョン7.2以降となっています。リリースが進むにつれて、その機能とホスティング環境は大幅に拡張されました。
PowerShellのバージョン別履歴:
- PowerShell 1.0 — 地方行政を支援した Windows サーバー2003。
- PowerShell 2.0 — 統合済み Windows 7本、そして Windows Server 2008 R2。リモート処理、トランザクション、バックグラウンドジョブ、イベント、デバッグ機能を追加しました。
- PowerShell 3.0 — 同梱 Windows 8本、そして Windows Server 2012 の一部として Windows 管理フレームワーク。スケジュールされたジョブ、セッション接続、およびモジュールの自動読み込み機能を追加しました。
- PowerShell 4.0 — 同梱 Windows 8.1本、そして Windows Server 2012 R2。希望状態構成、デバッグ機能の強化、およびネットワーク診断機能を追加しました。
- PowerShell 5.0 — 一部 Windows 管理フレームワーク5:リモートデバッグ、クラス定義、および.NET列挙型を追加しました。
- PowerShell 7.2 — .NET 6.0 をベースに構築されています。新しい演算子、動的なエラー ビュー、および自動バージョン通知機能が追加されています。
PowerShellの機能
- PowerShellリモート処理: リモートマシン上でスクリプトやコマンドレットを実行する。
- バックグラウンドジョブ: ローカルマシンまたは複数のリモートマシン上で、スクリプトやパイプラインを非同期的に実行する。
- トランザクション: コマンドレットと開発者が、まとめてコミットまたはロールバックできるグループ化された操作を実行できるようにする。
- 総合馬術: 管理イベントやシステムイベントを監視し、転送し、それに基づいて行動する。
- ネットワークファイル転送: バックグラウンドインテリジェント転送サービス(BITS)を介した、マシン間での優先順位付けされた非同期のスロットリング付きファイル転送をネイティブにサポートします。
PowerShellを起動する方法
PowerShell は、最近のすべてのバージョンにプリインストールされています。 Windows以下のように起動してください。
ステップ1) PowerShell を検索します Windows次に、それを選択してクリックします。
ステップ2) PowerShellウィンドウが開きます。
コマンドレットとコマンド
A コマンドレット (「コマンドレット」と発音します)は、PowerShell環境で使用される軽量コマンドです。PowerShellはプロンプトでコマンドレットを呼び出し、PowerShell APIを使用して独自のコマンドレットを作成することもできます。コマンドレットは、従来のシェルコマンドとは次の点で異なります。
- コマンドレットは NET Frameworkの クラスオブジェクトであり、単独の実行ファイルとして実行することはできません。
- コマンドレットは、わずか十数行のコードで記述できます。
- 解析、出力フォーマット、エラー表示は、コマンドレット自体ではなく、ランタイムによって処理されます。
- コマンドレットはオブジェクトを扱うため、テキストストリームとオブジェクトの両方をパイプラインを通して流すことができます。
- コマンドレットはレコードベースであり、一度に1つのオブジェクトを処理します。
PowerShellの機能のほとんどはコマンドレットを通じて提供され、コマンドレットは常に動詞-名詞の命名パターン(常に単数形)を使用します。コマンドレットはテキストではなくオブジェクトを返します。 スクリプト — コマンドレットとは異なり、テキストファイルに保存された一連のコマンドです。 .ps1 拡大。
PowerShellを学習する際によく使う動詞には、以下のようなものがあります。
- 以上 何かを取り出す。
- お気軽にご連絡ください 何か実行してみましょう。
- でる 何かを出力する。
- Force Stop — 実行中の処理を停止する。
- 作成セッションプロセスで ―何かを定義する。
- New 何かを創造する。
重要なPowerShellコマンド
助けを得ます: PowerShellコマンドとトピックに関するヘルプを参照してください。
例: ヘルプを表示する Format-Table
Get-Help Format-Table
取得コマンド: 呼び出し可能なものに関する情報を取得する。
例:マシンにインストールされているコマンドレットと関数の一覧を生成します。
Get-Command
サービスの取得: マシン上のすべてのサービスを検出します。
例: 名前が「vm」で始まるすべてのサービスを取得します。
Get-Service "vm*"
Get-Member: オブジェクトを使って何ができるかを示す。
例:Get-Service コマンドレットによって返される VM サービスのメンバーを一覧表示します。
Get-Service "vm*" | Get-Member
その他の便利なコマンドレット:
Get-Module— インストールされているコマンドパッケージを表示します。Get-Content―ファイルを読み込み、その内容を処理する。Get-*ワイルドカード — 「Get-」で始まるすべてのコマンドレットを一覧表示します。
例:フォルダを作成する。
New-Item -Path 'X:\Guru99' -ItemType Directory
出力:
PowerShell のデータ型
PowerShellは標準の.NETデータ型をサポートしているため、あらゆる値を変数にきれいに格納できます。
特殊な変数
PowerShellには、多数の組み込み特殊変数が用意されています。最も便利なものを以下に示します。
| 特殊変数 | 詳細説明 |
|---|---|
| $エラー | 最新のエラーを表すエラーオブジェクトの配列。 |
| $ホスト | 現在ホストされているアプリケーションの名前を表示します。 |
| $プロフィール | デフォルトシェルのユーザープロファイルのフルパスを保存します。 |
| $ PID | プロセス識別子を保存します。 |
| $PSUICulture | 現在のUIカルチャーの名前を保持します。 |
| $NULL | 空の値またはnull値が含まれています。 |
| $False | ブール値のFALSEが含まれています。 |
| $True | ブール値TRUEが含まれています。 |
PowerShellスクリプト
PowerShell スクリプトは、 .ps1 ファイル。デフォルトでは、スクリプトをダブルクリックして実行することはできません。この安全対策は、システムを偶発的な損傷から保護します。スクリプトを実行するには、スクリプトを右クリックして、[スクリプトの実行]を選択します。 「PowerShellで実行」.
実行ポリシーは、どのスクリプトの実行を許可するかを制御します。現在のポリシーを表示するには、 Get-ExecutionPolicy可能な値は次のとおりです。
- 制限付き スクリプトの使用は許可されていません。これがデフォルト設定です。
- すべて署名済み 信頼できる開発者によって署名されたスクリプトのみが実行され、それぞれに確認が必要です。
- RemoteSigned ― あなた自身のスクリプトに加え、信頼できるソースからの署名付きスクリプトも実行できます。
- 無制限の — どんなスクリプトでも実行できます(ただし、使用は控えめに)。
実行ポリシーを変更する手順:
ステップ1) PowerShell を右クリックして、管理者権限で PowerShell プロンプトを開きます。 管理者として実行.
ステップ2) 以下のコマンドを実行してください。
Get-ExecutionPolicySet-ExecutionPolicy Unrestricted- Enter
Y確認プロンプトで。 Get-ExecutionPolicy
最初の PowerShell スクリプト
メモ帳を開いて、以下を入力してください。
Write-Host "Hello, Guru99!"
ファイルを .ps1 拡張機能 — 例えば、 FirstScript.ps1.
PowerShellで、以下のコマンドでスクリプトを実行します。
& "X:\FirstScript.ps1"
PowerShell ISE とは何ですか?
その Windows PowerShell 統合スクリプト環境 (ISE) PowerShell のデフォルトエディタは ISE です。ISE では、グラフィカルなウィンドウベースの環境でコマンドの実行、テストの作成、スクリプトのデバッグを行うことができます。複数行編集、構文の色分け、タブ補完、選択的実行などに対応しています。
PowerShell ISEには、コマンドを直接実行できるコンソールペインが用意されており、サイドペインにはスクリプトのソースコードやISEに接続されているツールが表示されます。複数のスクリプトウィンドウを同時に開くことができるため、他のスクリプトやモジュールで定義された関数に依存するスクリプトのデバッグに便利です。
ISEで以前のスクリプトを再作成します。
- コードをエディタに貼り付けてください。
- スクリプトを保存してください。
- F5キーを押して実行してください。
- コンソールペインの出力を確認してください。
サンプル2: 以下のスクリプトは無料を表示します 仮想メモリ マシン上で。
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, FreeVirtualMemory
PowerShellの Concepts
以下の概念は、日常的なPowerShell作業における基本的な用語を構成するものです。
| 概念 | 詳細説明 |
|---|---|
| コマンドレット | VBやC#などの.NET言語で記述された組み込みコマンド。開発者はPowerShellスナップインをロードまたは作成することで、コマンドセットを拡張できます。 |
| 機能 | PowerShell 言語自体で記述されたコマンドは、IDE を必要としません。 Visual Studioの. |
| スクリプト | ディスク上のテキストファイル .ps1 拡大。 |
| 用途 | 現行製品 Windows シェルから呼び出されるプログラム。 |
| もしも | コマンドレットを実行しないように指示し、実行した場合に何が起こるかを記述するように指示します。 |
| 確認します | コマンドレットを実行する前に確認を求めるように指示します。 |
| 冗長 | より詳細な運用情報を提供します。 |
| デバッグ | コマンドレットにデバッグ情報を出力するように指示します。 |
| エラーアクション | エラー発生時にコマンドレットが実行する動作を定義します。指定可能な値は、continue、stop、silentlycontinue、inquireです。 |
| エラー変数 | エラー情報を保持する変数の名前を指定します。 |
| アウト変数 | コマンドレットの出力を特定の変数に格納するように指示します。 |
| でるBuffer | パイプラインに送る前に、特定の数のオブジェクトを保持します。 |
PowerShellスクリプトを使用する利点
- PowerShellスクリプトは強力かつ簡潔です。わずか数行で多くのことを実現できます。
- 変数は次のように宣言されます。
$<variable>構文。 - 変数には、コマンド出力、オブジェクト、およびプリミティブ値を保持できます。
- 変数の型を明示的に指定する必要はありません。
PowerShellとコマンドプロンプトの比較
| PowerShellの | コマンドプロンプト |
|---|---|
| 深く統合された Windows対話型のコマンドラインと完全なスクリプト言語を提供します。 | デフォルトのコマンドラインインターフェースは Microsoft他のWin32オブジェクトと通信するシンプルなWin32アプリケーション。 |
| 対話的に、または自動化スクリプトを介して呼び出すことができるコマンドレットを使用します。 | コマンドレットはありません。 |
| 出力をオブジェクトとして扱い、パイプラインを通じて別のコマンドレットに渡せるようにします。 | 出力はオブジェクトではなく、プレーンテキストのストリームです。 |
| 機能、性能、内部アーキテクチャにおいて高度なレベルを実現。 | 基本的なシェルで、従来のバッチ処理に適しています。 |
PowerShellの応用例
PowerShellは、大規模な企業ネットワークにおける作業負担を大幅に軽減できるため、IT管理者にとって標準的な選択肢となっています。400台以上のサーバーを管理し、各ホストで特定のサービスが稼働していることを前提とした新しいセキュリティソリューションを展開することを想像してみてください。
各サーバーに手動でログインするのは時間がかかり、エラーも発生しやすい。PowerShellスクリプトを使えば、数分で全てのサーバーを調査し、既にサービスが実行されているホストを報告し、残りのホストでもサービスを有効にすることができる。このスクリプトは一度意図を捉えれば、システム全体に確実に適用できる。
















