PowerShell: 自動変数(シェル変数)とは

PowerShellには自動変数(シェル変数)と呼ばれる変数があります。 自動変数とはPowerShellによって作成・管理される変数のことで、 ホームディレクトリのパスやエラー情報、引数情報などの 状態が格納されています。

いくつかの自動変数がある中で、 最も使用頻度が高いのは「$true」と「$false」です。 「$true」は真偽値の真「True」を表し、 「$false」は偽「False」を表します。 PowerShellでは真偽値を表す場合「True」や「False」 と記述するとエラーになります。 自動変数を使って「$true」「$false」と記述します。
他にはNULL値も「NULL」ではなく「$null」と記述します。

代表的な自動変数

PowerShellの自動変数は約50個くらいありますが、 その中でも使う機会のありそうなものを紹介します。

自動変数概要
$true真偽値の真(True)
$false真偽値の偽(False)
$nullNUll値
$Args関数やスクリプトに指定したパラメータの値
$Errorエラー情報
$HOMEユーザーのホームディレクトリのパス
$PSHOMEPowerShellがインストールされているディレクトリのパス
$this自分自身を示すオブジェクト

詳細は公式サイトで確認してください。
自動変数について - PowerShell | Microsoft Docs

自動変数は読み取り専用の変数

自動変数は読み取り専用の変数として機能しますが、 中には書き込みできる自動変数もあります。 ですが「旧バージョンとの互換性のために書き込ま ない でください」 とPowerShellの公式ページには書かれています。

試しに「$true」に対して書き込みすると次のようにエラーが発生します。

$true = 1

# 実行結果(エラーメッセージ)
変数 true は読み取り専用または定数であるため、上書きできません。

一方、「$null」に対して書き込みを行うとエラーは発生しませんが、 値は書き変わらないようです。

$null = "abc"

Write-Host "-----"
Write-Host $null
Write-Host "-----"

# 実行結果
-----

-----
PowerShell