この記事では、PowerShellの自動変数とユーザ設定変数について説明します。
自動変数
Powershellの変数は、Powershellで自動的に定義されている変数があります。これを「自動変数」といいます。自動変数はPowerShell によって作成、管理されます。
Powershell起動直後に、「Get-Variable」コマンドレットを実行すると、自動変数の一覧が確認できます。
自動変数一覧の確認
PS> Get-Variable
Name Value
---- -----
$
? True
^
args {}
:
(省略)
:
VerbosePreference SilentlyContinue
WarningPreference Continue
WhatIfPreference False
主な自動変数
Powershellには、様々な自動変数が定義されています。
| 自動変数 | 意味 |
| $$ | シェルが受け取った最後の行にある最後のトークン。 |
| $? | 最後のコマンドの実行状態。 最後のコマンドが成功した場合は True 、失敗した場合 は False。 |
| $^ | シェルが受け取った最後の行にある最初のトークン。 |
| $_ | パイプラインオブジェクト内の現在のオブジェクト。 |
| $args | 関数、スクリプトで受け取る引数の配列。 |
| $Error | 最新のエラーを表すエラーオブジェクト。 |
| $false | False値。 |
| $home | ユーザーのホーム ディレクトリの完全なパス。 |
| $input | パイプラインで渡された入力オブジェクト。 |
| $null | null または空の値。 |
| $PID | 現在のPowerShell のプロセス識別子 (PID) 。 |
| $profile | 現在のユーザープロファイルの完全なパス。 |
| $pshome | PowerShell のインストール ディレクトリの完全なパス 。 |
| $PWD | 現在の PowerShell のディレクトリの完全なパス。 |
| $true | True値。 |
ユーザー設定変数
「ユーザー設定変数」とは、自動変数と同じように、あらかじめPowershellで定義されている変数です。
自動変数との違いは、自動変数はユーザーが変更できませんが、ユーザー設定変数はユーザーが変更できます。
ユーザー設定変数は、主にPowershell環境のカスタマイズに使用します。
主なユーザー設定変数
| ユーザ設定変数名 | 初期値 | 意味 |
| $ConfirmPreference | High | 確認メッセージの表示動作を制御する。 |
| $DebugPreference | SilentlyContinue | デバッグメッセージの表示動作を制御する。 |
| $ErrorActionPreference | Continue | エラーメッセージの表示動作を制御する。 |
| $ProgressPreference | Continue | プログレスバーの表示動作を制御できる。 |
| $WarningPreference | Continue | 警告メッセージの表示動作を制御できる。 |
変数の出力
変数の出力には、「Write-Host」コマンドレットと、「Write-Output」コマンドレットを使用します。
これらのコマンドレットは、オブジェクトの内容をコンソール画面に出力します。
編集の出力のコマンドレット
| コマンドレット名 | 意味 |
| Write-Host | ホストユーザインターフェース(通常はPowershellコンソール画面)を使用してオブジェクトを表示します。 改行無しの出力や、画面に出力する文字や背景の色を指定できます。 |
| Write-Output | オブジェクトをパイプラインに書き込みます。 |
Write-Hostコマンドレットの例
PS> Write-Host $pwd -ForegroundColor yellow -BackgroundColor Blue
C:\temp
Write-Outputコマンドレットの例
PS> Write-Output $pwd Path ---- C:\temp
Write-Outputコマンドレットでパイプを通して出力する例
PS> Write-Output $pwd | Get-Member
TypeName: System.Management.Automation.PathInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Drive Property System.Management.Automation.PSDriveInfo Drive {get;}
Path Property string Path {get;}
Provider Property System.Management.Automation.ProviderInfo Provider {get;}
ProviderPath Property string ProviderPath {get;}
Read-Hostコマンドレットの例
Powershellプロンプトからの入力を受け取って変数に値を代入するコマンドレットです。
PS> $a = Read-Host "何番ですか?" 何番ですか?: 3 PS> Write-Host $a 3
まとめ
今回はPowerShellの自動変数とユーザ設定変数について説明しました。また、変数の出力についても説明しました。
