初心者向けの Powershell チュートリアル

⚡ スマートサマリー

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

  • 🚀 適切なシェルを起動します。 管理者権限が必要な場合は、スタートメニューからPowerShellまたはPowerShell ISEを開き、管理者として実行してください。
  • 🧩 テキストコマンドではなく、コマンドレットを使用してください。 コマンドレットは動詞+名詞の命名規則に従い、.NET オブジェクトを返すため、出力はパイプラインを通して次のコマンドレットに流れ込むことができます。
  • 🔐 実行ポリシーは慎重に設定してください。 .ps1 スクリプトを実行する際に、安全性と利便性のバランスを取るには、Set-ExecutionPolicy と RemoteSigned を使用してください。
  • 📁 再利用可能な.ps1スクリプトを作成する: コマンドレット、変数、パイプラインを拡張子.ps1のテキストファイルにまとめて、反復的な管理タスクを自動化します。
  • 🤖 PowerShellとAIを組み合わせる: AIアシスタントは、平易な英語のリクエストをすぐに実行できるPowerShellスクリプトに変換し、馴染みのないコマンドレットを一行ずつ解説します。

初心者向けの Powershell チュートリアル

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次に、それを選択してクリックします。

PowerShellを起動します

ステップ2) PowerShellウィンドウが開きます。

PowerShellウィンドウ

コマンドレットとコマンド

A コマンドレット (「コマンドレット」と発音します)は、PowerShell環境で使用される軽量コマンドです。PowerShellはプロンプトでコマンドレットを呼び出し、PowerShell APIを使用して独自のコマンドレットを作成することもできます。コマンドレットは、従来のシェルコマンドとは次の点で異なります。

  • コマンドレットは NET Frameworkの クラスオブジェクトであり、単独の実行ファイルとして実行することはできません。
  • コマンドレットは、わずか十数行のコードで記述できます。
  • 解析、出力フォーマット、エラー表示は、コマンドレット自体ではなく、ランタイムによって処理されます。
  • コマンドレットはオブジェクトを扱うため、テキストストリームとオブジェクトの両方をパイプラインを通して流すことができます。
  • コマンドレットはレコードベースであり、一度に1つのオブジェクトを処理します。

PowerShellの機能のほとんどはコマンドレットを通じて提供され、コマンドレットは常に動詞-名詞の命名パターン(常に単数形)を使用します。コマンドレットはテキストではなくオブジェクトを返します。 スクリプト — コマンドレットとは異なり、テキストファイルに保存された一連のコマンドです。 .ps1 拡大。

PowerShellを学習する際によく使う動詞には、以下のようなものがあります。

  • 以上 何かを取り出す。
  • お気軽にご連絡ください 何か実行してみましょう。
  • でる 何かを出力する。
  • Force Stop — 実行中の処理を停止する。
  • 作成セッションプロセスで ―何かを定義する。
  • New 何かを創造する。

重要なPowerShellコマンド

助けを得ます: PowerShellコマンドとトピックに関するヘルプを参照してください。

例: ヘルプを表示する Format-Table

Get-Help Format-Table

Get-Help コマンドレット

取得コマンド: 呼び出し可能なものに関する情報を取得する。

例:マシンにインストールされているコマンドレットと関数の一覧を生成します。

Get-Command

Get-Command コマンドレット

サービスの取得: マシン上のすべてのサービスを検出します。

例: 名前が「vm」で始まるすべてのサービスを取得します。

Get-Service "vm*"

Get-Service コマンドレット

Get-Member: オブジェクトを使って何ができるかを示す。

例:Get-Service コマンドレットによって返される VM サービスのメンバーを一覧表示します。

Get-Service "vm*" | Get-Member

Get-Member コマンドレット

その他の便利なコマンドレット:

  • Get-Module — インストールされているコマンドパッケージを表示します。
  • Get-Content ―ファイルを読み込み、その内容を処理する。
  • Get-* ワイルドカード — 「Get-」で始まるすべてのコマンドレットを一覧表示します。

例:フォルダを作成する。

New-Item -Path 'X:\Guru99' -ItemType Directory

出力:

New-Item の出力

PowerShell のデータ型

PowerShellは標準の.NETデータ型をサポートしているため、あらゆる値を変数にきれいに格納できます。

PowerShell のデータ型

特殊な変数

PowerShellには、多数の組み込み特殊変数が用意されています。最も便利なものを以下に示します。

特殊変数 詳細説明
$エラー 最新のエラーを表すエラーオブジェクトの配列。
$ホスト 現在ホストされているアプリケーションの名前を表示します。
$プロフィール デフォルトシェルのユーザープロファイルのフルパスを保存します。
$ PID プロセス識別子を保存します。
$PSUICulture 現在のUIカルチャーの名前を保持します。
$NULL 空の値またはnull値が含まれています。
$False ブール値のFALSEが含まれています。
$True ブール値TRUEが含まれています。

PowerShellスクリプト

PowerShell スクリプトは、 .ps1 ファイル。デフォルトでは、スクリプトをダブルクリックして実行することはできません。この安全対策は、システムを偶発的な損傷から保護します。スクリプトを実行するには、スクリプトを右クリックして、[スクリプトの実行]を選択します。 「PowerShellで実行」.

PowerShell で実行

実行ポリシーは、どのスクリプトの実行を許可するかを制御します。現在のポリシーを表示するには、 Get-ExecutionPolicy可能な値は次のとおりです。

  • 制限付き スクリプトの使用は許可されていません。これがデフォルト設定です。
  • すべて署名済み 信頼できる開発者によって署名されたスクリプトのみが実行され、それぞれに確認が必要です。
  • RemoteSigned ― あなた自身のスクリプトに加え、信頼できるソースからの署名付きスクリプトも実行できます。
  • 無制限の — どんなスクリプトでも実行できます(ただし、使用は控えめに)。

実行ポリシーを変更する手順:

ステップ1) PowerShell を右クリックして、管理者権限で PowerShell プロンプトを開きます。 管理者として実行.

PowerShell を管理者として実行する

ステップ2) 以下のコマンドを実行してください。

  1. Get-ExecutionPolicy
  2. Set-ExecutionPolicy Unrestricted
  3. Enter Y 確認プロンプトで。
  4. Get-ExecutionPolicy

実行ポリシーの変更

最初の PowerShell スクリプト

メモ帳を開いて、以下を入力してください。

Write-Host "Hello, Guru99!"

ファイルを .ps1 拡張機能 — 例えば、 FirstScript.ps1.

FirstScript.ps1を保存してください。

PowerShellで、以下のコマンドでスクリプトを実行します。

& "X:\FirstScript.ps1"

FirstScript.ps1を実行します。

PowerShell ISE とは何ですか?

その Windows PowerShell 統合スクリプト環境 (ISE) PowerShell のデフォルトエディタは ISE です。ISE では、グラフィカルなウィンドウベースの環境でコマンドの実行、テストの作成、スクリプトのデバッグを行うことができます。複数行編集、構文の色分け、タブ補完、選択的実行などに対応しています。

PowerShell ISEには、コマンドを直接実行できるコンソールペインが用意されており、サイドペインにはスクリプトのソースコードやISEに接続されているツールが表示されます。複数のスクリプトウィンドウを同時に開くことができるため、他のスクリプトやモジュールで定義された関数に依存するスクリプトのデバッグに便利です。

PowerShell 伊勢

ISEで以前のスクリプトを再作成します。

  1. コードをエディタに貼り付けてください。
  2. スクリプトを保存してください。
  3. F5キーを押して実行してください。
  4. コンソールペインの出力を確認してください。

ISEでスクリプトを実行する

サンプル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スクリプトを使えば、数分で全てのサーバーを調査し、既にサービスが実行されているホストを報告し、残りのホストでもサービスを有効にすることができる。このスクリプトは一度意図を捉えれば、システム全体に確実に適用できる。

よくあるご質問

PowerShell は自動化します Windows システム管理(サービス、ファイル、ユーザー、サーバーなどの管理)は、.NETフレームワーク上に構築されたオブジェクト指向のコマンドラインとスクリプト言語を用いて行われます。

コマンドレットは、動詞と名詞を組み合わせた名前を使用し、オブジェクトを返す軽量な.NETクラスオブジェクトです。他のシェルにおける従来のコマンドは、プレーンテキストを出力し、独自の解析と書式設定を行います。

PowerShellはオブジェクトを扱い、コマンドレット、スクリプト、および高度な.NET統合をサポートしています。コマンドプロンプトは基本的なテキストベースのシェルであり、コマンドの出力はオブジェクトではなくプレーンテキストです。

.ps1 ファイルは PowerShell スクリプト、つまり 1 つ以上の PowerShell コマンドを含むテキスト ファイルです。デフォルトではダブルクリックでは実行できず、コンソールから、または PowerShell で実行することで実行されます。

PowerShellを管理者として開き、Set-ExecutionPolicyコマンドレットをRemoteSignedやUnrestrictedなどの値を指定して実行し、確認します。現在の設定を確認するには、Get-ExecutionPolicyコマンドレットを使用します。

統合スクリプト環境(ISE)は、PowerShellに組み込まれたGUIエディタで、構文の色分け、タブ補完、複数のスクリプトタブなどの機能を備え、スクリプトの作成、実行、テスト、デバッグを行うことができます。

AIアシスタントは、コマンドレットを提案したり、スクリプトの動作を説明したり、入力中にエラーを検出したりします。これにより、管理者はタスクをより迅速に自動化し、平易な英語のリクエストを動作するPowerShellコマンドに変換できます。

はい。AIコードアシスタントは、「停止しているすべてのサービスを一覧表示して再起動する」といった平易な英語の説明から、完全なPowerShellスクリプトを生成し、各コマンドレットの説明も提供するので、実行前に確認できます。