Windows Server 2025 / PowerShellのコマンド・ヘルプ・パイプラインを学ぶ

PowerShellは画面の文字列だけでなく、プロパティを持つオブジェクトを扱います。問い合わせにWhere-Object、Select-Object、Sort-Objectを組み合わせると、条件と必要な列を明示してサーバーを調べられます。

シェルの版とヘルプを確認する

例はWindows Server 2025のWindows PowerShell 5.1を対象にした読み取りです。別途導入したPowerShell 7ではモジュールの互換性が異なる場合があります。権限によって取得できる情報も変わります。

$PSVersionTable
Get-Command Get-Service
Get-Help Get-Service -Examples

Get-Commandで存在を調べ、Get-Helpで引数を確認します。ローカルヘルプが不足する場合は同じ版の公式リファレンスを読みます。GetとSetのように動詞から操作の種類も確認し、未知の補助スクリプトを安易に実行しません。

表示ではなくプロパティを調べる

Get-Service | Select-Object -First 5
Get-Service | Get-Member
Get-Service -Name WinRM | Select-Object Name,DisplayName,Status

サービスにはName、DisplayName、Statusなどがあります。画面の列幅に合わせて文字を切り出すより、プロパティを選ぶ方法が安定します。PowerShellのオブジェクトも参照してください。Get-Memberにはメソッドも表示されますが、実行すると変更が起こるものもあるため、名前だけで呼び出さないようにします。

パイプラインで抽出と並べ替えをつなぐ

縦棒は次のコマンドへオブジェクトを渡します。$_は処理中の対象です。次は稼働中のサービスだけを選び、名前順にして必要な列を返します。

Get-Service |
    Where-Object { $_.Status -eq 'Running' } |
    Sort-Object Name |
    Select-Object Name,DisplayName,Status

比較実習ではRunningだけをStoppedへ変え、結果を見てから元に戻します。変わるのは抽出条件で、実際のサービスは停止しません。eqは等しい、neは等しくない、gtはより大きい、likeはパターンです。数値の比較ではデータ型も確認します。

変数と単位を明確にする

$labDisks = Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3'
$labDisks | Select-Object DeviceID,
    @{Name='SizeGiB';Expression={[math]::Round($_.Size / 1GB,1)}},
    @{Name='FreeGiB';Expression={[math]::Round($_.FreeSpace / 1GB,1)}}

変数にはディスクのオブジェクトが入っています。PowerShellの1GBは1,073,741,824バイトなので、この列名はGiBとしています。ドライブ数や値は実環境によって変わります。

Format-Tableは人が読む最終表示に使います。CSV出力の前に入れると、元のプロパティではなく表示用データを渡してしまいます。変数にオブジェクトを残せば、後から別の条件で再利用できます。

問い合わせから変更へ進む前の確認

  1. ヘルプでコマンドと引数を確認します。
  2. 問い合わせで変更前の値を記録します。
  3. 対応する変更コマンドならWhatIfで予定を確認します。
  4. 影響と戻し方を別途検討し、実行場所が分かるps1ファイルを残します。

コマンドがない場合は綴り、モジュール、シェルの版を調べます。アクセス拒否とは別の問題です。動かすために実行ポリシーと保護機能をまとめて弱めず、組織の承認や署名の要件に従います。