【PowerShell】変数とオブジェクト

※この記事は「2023年4月21日」に更新しました。

今回は、変数とオブジェクトについて。

PowerShell(パワーシェル)最大の特徴は、オブジェクトを扱うということです。

これに対して、コマンドプロンプトは文字列しか扱うことができません。

つまり、PowerShell の場合、変数には、文字列だけでなく様々な型が格納できるわけです。

タカフミ
記事を書いている管理人の経歴は、以下の通りです。
  • 基本情報技術者資格所有者(ソフト開発の国家資格)
  • WordPress歴、10年以上
  • パソコン販売歴、約5年

変数の扱い方

タカフミ
PowerShell(パワーシェル)の変数の扱い方を紹介します。

変数の確認

変数の一覧を確認するには、Get-Variable を使います。

Get-Variable

実行結果は、以下の通りです。

Get-Variable

変数の定義

変数の定義は、下記のようになります。

$変数名=値

値の代入も行っています。

変数の値を削除

変数の値を削除する方法です。

$変数=$null

$null を代入することで変数の中身を空にすることができます。

変数の削除

変数本体を削除する方法です。

Remove-Variable を使います。

Remove-Variable 変数名

これで変数本体を削除することができます。



シェル変数

PowerShell(パワーシェル)には、元々組み込まれている変数がいくつかあります。

自動変数

PowerShell が自動で値を設定しているものを自動変数といいます。

タカフミ
自動変数には、以下のようなものがあります。
変数名 内容
$$ 前のコマンドラインの最後のトークン
$? 最後に実行したコマンドの結果(成功か失敗か)
$^ 前のコマンドラインの最初のトークン
$args スクリプトや関数、スクリプトブロックの引数
$HOME ユーザーのホームディレクトリ
$PID 現在の pwsh のプロセスID
$PWD 現在のパス

まだまだたくさんあります。

タカフミ
詳しく知りたいという方は about_automatic_variables を参照してください。

ユーザー設定変数

シェル変数の中には、ユーザーが設定することで PowerShell の挙動を変更することができるものもあります。

変数名 内容
ConfirmPreference 危険度の高いコマンドレットや関数を実行する前に確認を求めるかどうか
DebugPreference デバッグでプロンプトを表示するかどうか
ErrorActionPreference 例外発生時に実行を止めるかどうか
FormatEnumerationLimit 表示されるアイテムの数
InformationPreference インフォメーションストリームを表示するかどうか
MaximumAliasCount エイリアス数の上限値
MaximumDriveCount ドライブ数の上限値
MaximumErrorCount エラー履歴保存数の上限値
MaximumDriveCount ドライブ数の上限値
MaximumFunctionCount 関数の数の上限値
MaximumHistoryCount 入力履歴保存数の上限値
MaximumVariableCount 変数の最大値
OutputEncoding 出力エンコーディング
ProgressPreference 進捗バーを表示するかどうか
PSDefaultParameterValues コマンドレットのデフォルトのパラメーター値

このユーザー設定変数もたくさんあります。

タカフミ
最初は変更するということはないかと思います。

こういうものがある程度に理解しておきましょう。

変数とオブジェクト

PowerShell(パワーシェル)の変数は、オブジェクトとして扱われます。

例えば、以下のように変数を定義して値を代入します。

$a=10

次にすべてのオブジェクトが持っている GetTypeメソッドを使います。

$a.GetType()

これを実行すると、変数の型が Int32型ということがわかります。

今度は、文字列を別の変数に代入します。

$b="タカフミブログ"

Lengthプロパティを使って、文字列の長さを取得します。

$b.Length

これを実行すると、7 が返ってきます。

今までの実行結果は、以下の通りです。

変数とオブジェクト

最後に

今回は、PowerShell(パワーシェル)の変数について、解説しました。

コマンドプロンプトと似ているようで、異なるということが理解できたかと思います。

オブジェクトを操作して、慣れていきましょう。