PowerShell 入門: 強力なスクリプティングのための初心者ガイド
PowerShell レッスンの学習を始めましょう。まず以下を学びます:
PowerShell とは?
Windows PowerShell はオブジェクト指向の自動化エンジンおよびスクリプト言語です。主に IT プロフェッショナルとシステム管理者向けに設計され、Windows OS や他のアプリケーションの管理・自動化を制御します。Windows コマンドプロンプトと Windows Script Host 環境で得た知識や作成したスクリプトを拡張する魅力的な新概念を提供します。
スクリプトの柔軟性、コマンドラインの速度、GUI ベース管理ツールのパワーを兼ね備えています。将来的な手作業時間を削減し、システム管理者が効率的に問題を解決できるよう支援します。PowerShell を学ぶ上で知っておくべき重要な側面をすべて網羅します。
この初心者向け PowerShell チュートリアルでは以下の基礎を学習します:
- PowerShell とは?
- なぜ PowerShell を使うのか?
- PowerShell の歴史
- PowerShell の機能
- PowerShell の起動方法
- PowerShell コマンドレット
- コマンドレット vs コマンド
- PowerShell データ型
- 特殊変数
- PowerShell スクリプト
- 最初の PowerShell スクリプト
- PowerShell ISE とは?
- PowerShell の概念
- PowerShell vs コマンドプロンプト
- PowerShell の応用
これは PowerShell スクリプト基礎の完全ガイドです…始めましょう!
なぜ PowerShell を使うのか?
PowerShell を使用する主な理由:
- OS の操作に統合されたコマンドライン体験を提供
- .NET フレームワークのすべての型へ完全アクセス可能
- システム管理者から信頼されている
- サーバーおよびワークステーション コンポーネントを簡単に操作可能
- システム管理者向けにより簡潔な構文を提供
- VBScript など他のスクリプト言語より安全
PowerShell の歴史
PowerShell バージョン 1.0 は 2006 年にリリース。現在、PowerShell はバージョン 7.2 まで進化。年月とバージョンの進行に伴い、機能とホスティング環境が大幅に拡張されました。
バージョン別の PowerShell 歴史:
- PowerShell 1.0 – Windows Server 2003 のローカル管理をサポート
- PowerShell 2.0 – Windows 7 と Windows Server 2008 R2 に統合。リモート処理、トランザクション、バックグラウンド ジョブ、イベント、デバッグなど機能強化
- PowerShell 3.0 – Windows 管理フレームワークの内部コンポーネントとしてリリース。Windows 8 と Windows Server 2012 にインストール。ジョブの追加/スケジュール、セッション接続、モジュール自動読み込みなど
- PowerShell 4.0 – Windows 8.1 と Windows Server 2012 R2 に同梱。望ましい状態構成 (DSC)、デバッグ強化、ネットワーク診断を追加
- PowerShell 5.0 – Windows 管理フレームワーク 5 の内部コンポーネントとしてリリース。リモート デバッグ、クラス定義、.NET 列挙型など
- PowerShell 7.2 – .NET 6.0 上で構築。新演算子、簡素化された動的エラービュー、自動新バージョン通知など
次に PowerShell の機能について学びます。
PowerShell の機能
- PowerShell リモート処理: スクリプトとコマンドレットをリモートマシンで呼び出し可能。
- バックグラウンド ジョブ: スクリプトやパイプラインを非同期に呼び出し可能。ローカルまたは複数のリモートマシンで実行可能。
- トランザクション: コマンドレットを有効化し、開発者が実行可能にする (原文のまま)
- イベント: 管理およびシステム イベントのリッスン、転送、対応を支援 (原文 "Evening" は誤訳と思われ "Event" の意)
- ネットワーク ファイル転送: BITS (Background Intelligent Transfer Service) 技術を用いた優先度付き、非同期、スロットル制御されたマシン間ファイル転送をネイティブサポート。
PowerShell の起動方法
Windows OS で PowerShell を起動する手順:
ステップ 1) Windows で PowerShell を検索。選択してクリック。

ステップ 2) PowerShell ウィンドウが開く。

PowerShell コマンドレット
コマンドレット (Command-let) は、Windows ベースの PowerShell 環境で使用される軽量コマンドです。PowerShell はコマンドプロンプトでこれらのコマンドレットを呼び出します。PowerShell API を使用してコマンドレットを作成および呼び出せます。
コマンドレット vs コマンド:
コマンドレットは他のコマンドシェル環境のコマンドと以下の点で異なります:
- コマンドレットは .NET Framework クラスオブジェクトであり、単独では実行不可
- 数十行のコードから構築可能
- パース、出力フォーマット、エラー表示はコマンドレットが処理しない
- コマンドレットはオブジェクトで動作。テキストストリームとオブジェクトをパイプライン出力として渡せない
- コマンドレットはレコードベースで、一度に 1 オブジェクトを処理
PowerShell の機能の大半はコマンドレットから来ており、常に動詞-名詞形式 (複数形ではない) です。また、コマンドレットはテキストではなくオブジェクトを返します。コマンドレットは 1 行以上の一連のコマンドで、.ps1 拡張子のテキストファイルに保存されます。
コマンドレットは常に動詞と名詞で構成され、ハイフンで区切られます。PowerShell 学習に重要な動詞:
- Get — 何かを取得
- Start — 何かを実行
- Out — 何かを出力
- Stop — 実行中の何かを停止
- Set — 何かを定義
- New — 何かを作成
PowerShell コマンド
重要な PowerShell コマンドのリスト:
Get-Help: PowerShell コマンドとトピックのヘルプ
例: Format-Table コマンドのヘルプ情報表示
Get-Help Format-Table

Get-Command: 呼び出し可能なものについての情報取得
PowerShell スクリプト例: マシンにインストールされたコマンドレット、関数の一覧生成
Get-Command

Get-Service: 名前に 'service' を含むすべてのコマンドレットを検索
例: "vm" で始まるすべてのサービス取得
Get-Service "vm*"

Get-Member: オブジェクトで可能な操作を表示
例: vm プロセスのメンバー取得
Get-Service "vm*" | Get-Member

その他のコマンド:
- Get-Module: コマンドパッケージを表示
- Get-Content: ファイルを取得し内容を処理して何らかの操作を行う
- Get-: 'get-' で始まるすべてのコマンドレットを検索
例: フォルダ作成
New-Item -Path 'X:\Guru99' -ItemType Directory
出力

PowerShell データ型
特殊変数
| 特殊変数 | 説明 |
|---|---|
| $Error | 最新のエラーを表示するエラーオブジェクトの配列 |
| $Host | 現在のホストアプリケーション名を表示 |
| $Profile | デフォルトシェルのユーザープロファイルの完全パスを格納 |
| $PID | プロセス識別子を格納 |
| $PSUICulture | 現在の UI カルチャ名を保持 |
| $NULL | 空または NULL 値を含む |
| $False | FALSE 値を含む |
| $True | TRUE 値を含む |
PowerShell スクリプト
PowerShell スクリプトは .ps1 ファイルに保存されます。デフォルトでは、ファイルをダブルクリックするだけでは実行できません。これはシステムを偶発的な害から守るためです。スクリプトを実行するには:
ステップ 1: 右クリックして「PowerShell で実行」をクリック。

さらに、スクリプト実行を制限するポリシーがあります。Get-ExecutionPolicy コマンドで確認できます。
以下のいずれかが出力されます:
- Restricted — スクリプト実行不可。デフォルト設定なので初回実行時に表示。
- AllSigned — 信頼できる開発者によって署名されたスクリプトのみ実行可能。実行前に確認プロンプト表示。
- RemoteSigned — 自分で作成したスクリプト、または信頼できる開発者による署名済みスクリプトを実行可能。
- Unrestricted — 任意のスクリプトを実行可能。
実行ポリシー変更手順
ステップ 1) 管理者権限で PowerShell プロンプトを開く。PowerShell を右クリックして「管理者として実行」

ステップ 2) 以下のコマンドを入力
- Get-ExecutionPolicy
- Set-ExecutionPolicy unrestricted
- プロンプトで Y を入力
- Get-ExecutionPolicy

最初の PowerShell スクリプト
メモ帳に以下のコマンドを記述
Write-Host "Hello, Guru99!"
PowerShell スクリプトの拡張子は .ps1。ファイル名を FirstScript.ps1 で保存。

PowerShell で以下のコマンドでスクリプトを呼び出し
& "X:\FirstScript.ps1"

PowerShell ISE とは?
Windows PowerShell Integrated Scripting Environment (ISE) は Windows PowerShell のデフォルトエディタです。この ISE では、ウィンドウベースの GUI 環境でコマンド実行、スクリプト作成、テスト、デバッグが可能です。複数行編集、構文着色、タブ補完、選択実行など多くの機能を備えます。
Windows PowerShell ISE ではコンソールペインでコマンド実行も可能。さらに、スクリプトソースコードと ISE にプラグインできる他のツールを同時に表示するペインもサポートしています。
複数のスクリプトウィンドウを同時に開くことも可能。他のスクリプトやモジュールで定義された関数を使用するスクリプトをデバッグする際に特に便利です。
メモ帳で作成した同じスクリプトを ISE でも作成可能:
- エディタにコードをペースト
- スクリプト保存
- F5 でスクリプト実行
- コンソールで出力を確認

サンプル 2:
以下のコードでマシンの空き仮想メモリを取得
Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost | Select-Object -Property CSName,FreeVirtualMemory

PowerShell の概念
この PowerShell 初心者チュートリアルでは重要な PowerShell 概念を学びます:
コマンドレット VB や C# などの .NET 言語で書かれたビルトインコマンド。開発者は PowerShell スナップインを読み込み/作成することでコマンドレットセットを拡張可能。
関数 PowerShell 言語で書かれたコマンド。Visual Studio などの他の IDE を使わずに開発可能。
スクリプト ディスク上の .ps1 拡張子を持つテキストファイル
アプリケーション 既存の Windows プログラム
WhatIf コマンドレットを実行せず、実行した場合に何が起こるかを通知
Confirm コマンド実行前にプロンプト表示
Verbose より詳細な情報を提供
Debug デバッグ情報を提供するようコマンドレットに指示
ErrorAction エラー発生時の特定アクションを指定。続行、停止、サイレント継続、問い合わせが可能
ErrorVariable エラー情報を保持する変数を指定
OutVariable 出力情報を保持する特定変数をコマンドレットに指示
OutBuffer パイプライン内の次のコマンドレットを呼び出す前に特定数のオブジェクトを保持するよう指示
PowerShell スクリプト使用の利点
- PowerShell スクリプトは非常に強力で、少ない行数で多くのことが可能。
- 変数は
$<variable>形式で宣言。 - 変数はコマンド出力、オブジェクト、値を保持可能。
- 変数の「型」を指定する必要なし。
PowerShell vs コマンドプロンプト
| PowerShell | コマンドプロンプト |
|---|---|
| Windows OS と深く統合。インタラクティブなコマンドラインインターフェースとスクリプト言語を提供。 | Microsoft が提供するデフォルトのコマンドラインインターフェース。Windows OS 内のあらゆる Win32 オブジェクトと対話できるシンプルな Win32 アプリケーション。 |
| コマンドレットを使用。ランタイム環境または自動化スクリプトで呼び出し可能。 | そのような機能は提供されない。 |
| オブジェクトとして扱う。出力をパイプライン経由で他のコマンドレットへ入力として渡せる。 | コマンドプロンプトや *nix シェルでも、コマンドレットから生成される出力は単なるテキストストリームではなくオブジェクトのコレクション。(原文の矛盾をそのまま翻訳) |
| 機能、能力、内部動作の面から非常に高度。 | コマンドプロンプトは非常に基本的。 |
PowerShell の応用
今日、PowerShell は大規模企業ネットワークでの管理操作と労力を軽減するため、IT 管理者にとって理想的な選択肢となっています。例えば、400 台以上のサーバーを含む大規模ネットワークを管理していると仮定します。新しいセキュリティソリューションを導入したいとします。このソリューションは、それらのサーバーで実行される必要がある特定のサービスに依存しています。
各サーバーにログインし、そのサービスがインストールされ実行されているかを確認することは可能です。しかし、スタッフがこの非生産的なプロセスに多くの時間を費やすことになり、人的エラーも多く発生します。
しかし、PowerShell を使用すれば、このタスクをわずか数分で完了できます。単一のスクリプトでサーバー上で実行中のサービス情報を収集できるためです。
まとめ
- Windows PowerShell はオブジェクト指向自動化エンジンおよびスクリプト言語
- OS 操作に統合されたコマンドライン体験を提供
- PowerShell 1.0 は 2006 年にリリース
- スクリプトとコマンドレットをリモートマシンで呼び出し可能
- 最新版 Windows にはプリインストール済み
- コマンドレットは Windows ベース PowerShell 環境の軽量コマンド
- Get、Start、Out、Stop、Set、New は重要な PowerShell コマンド
- Boolean、Byte、Char、Decimal、Long などが重要な PowerShell データ型
- $Error、$Host、$Profile、$PID、$PSUICulture、$NULL などが特殊変数
- Windows PowerShell ISE は PowerShell のデフォルトエディタ
- PowerShell は Windows OS と深く統合、コマンドプロンプトは Microsoft 提供のデフォルト CLI
- PowerShell は大規模企業ネットワークでの管理操作と労力を軽減するため IT 管理者の理想的選択肢
C言語
- Raspberry Pi 3 Model B+へのWindows 10 IoT Coreインストール:ステップバイステップガイド
- Raspberry Pi で障害物回避ロボットを自作 – 初心者ガイド
- 金属製造入門:初心者向け完全ガイド
- 初心者向けCNCルーター:容易な精度で市場をマスター
- CNCフライス加工初心者必見! 成功への4つの鉄則
- WindowsでC#開発用Visual Studio 2019 Community Editionをインストールする手順
- C#制御フロー完全ガイド:if、switch、for、whileの実例と解説
- C# Windows Forms開発実践チュートリアル:デスクトップアプリ構築入門
- 2021年版:Windows/macOS/Linux対応C# IDEトップ10レビュー
- Windows/macOS/Linux対応!C言語おすすめIDE 21選(2021年版)
- C言語マスター:初心者向け包括的PDFチュートリアル