PowerShellでの引数の扱い方とは?Paramを使った様々なオプションや記述方法を紹介

PowerShellでの引数の扱い方とは?Paramを使った様々なオプションや記述方法を紹介のアイキャッチイメージ

PowerShellでの引数の扱い方について紹介します!

今回は、PowerShellでの引数の扱い方について説明します。
引数を扱うにはParamを使用します。
ここでは、PowerShellのスクリプトファイルであるps1ファイルを作成・実行するケースとします。

PowerShellでの引数の扱い方に興味のある方はぜひご覧ください。

引数の基本的な使い方

PowerShellでの引数の基本的な使い方について紹介します。
実際のコマンドを見てみましょう。

Write-Host “”name: $name””
Write-Host “”age: $age””

実行結果は以下のようになります。

型指定

PowerShellでの引数の型指定の方法について紹介します。

実際のコマンドを見てみましょう。

Write-Host “”name: $name””
Write-Host “”age: $age””

実行結果は以下のようになります。

PS C:\test>

文字列の数字を入力するとintにキャストしますが、キャストできない文字列を入力するとエラーになります。

必須オプション

PowerShellでの引数を必須にする方法について紹介します。mandatory=$trueを指定します。

実際のコマンドを見てみましょう。

Write-Host “”name: $name””
Write-Host “”age: $age””

実行結果は以下のようになります。

コマンド パイプライン位置 1 のコマンドレット pstest.ps1
次のパラメーターに値を指定してください:
age: 20
name: taro
age: 20
PS C:\test> # 引数省略時
PS C:\test> .\pstest.ps1

コマンド パイプライン位置 1 のコマンドレット pstest.ps1
次のパラメーターに値を指定してください:
name: taro
age: 20
name: taro
age: 20
PS C:\test>

デフォルト値

PowerShellでの引数のデフォルト値を設定する方法について紹介します。

実際のコマンドを見てみましょう。

Write-Host “”name: $name””
Write-Host “”age: $age””

実行結果は以下のようになります。

配列

PowerShellでは引数を配列で受け取ることもできます。

実際のコマンドを見てみましょう。

$array
Write-Host “”length: “” $array.Length
$array.GetType()

実行結果は以下のようになります。

IsPublic IsSerial Name BaseType
——– ——– —- ——–
True True Object[] System.Array

PS C:\test>

配列の要素数に制限を設けることもできます。ValidateCountを使用します。

$array
Write-Host “”length: “” $array.Length
$array.GetType()

実行結果は以下のようになります。

IsPublic IsSerial Name BaseType
——– ——– —- ——–
True True Object[] System.Array

PS C:\test> # 要素数が5を超えるのでエラー
PS C:\test> .\pstest.ps1 “”taro””,””jiro””,””saburo””,””shiro””,””goro””,””rokuro””
C:\test\pstest.ps1 : パラメーター ‘array の引数を確認できません。指定された引数の数 (6) が、引数の最大許容数 (5) を超え
ています。5 未満の数の引数を指定して、コマンドを再度実行してください。
発生場所 行:1 文字:14
+ .\pstest.ps1 “”taro””,””jiro””,””saburo””,””shiro””,””goro””,””rokuro””
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [pstest.ps1]、ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,pstest.ps1

PS C:\test>

パイプライン引数

PowerShellでは引数をパイプラインから受け取ることができます。
ValueFromPipelineを使用します。

実際のコマンドを見てみましょう。

Write-Host “”name: $name””
Write-Host “”age: $age””

実行結果は以下のようになります。

パイプラインから引数を受け取れていることが分かります。ValueFromPipelineを指定しないと以下のようになります。

Write-Host “”name: $name””
Write-Host “”age: $age””

実行結果は以下のようになります。

まとめ

いかがでしたでしょうか。
PowerShellでの引数の扱い方について説明しました。
引数を扱うにはParamを使用します。
Paramには様々なオプションや記述方法があり、そのうちのいくつかを紹介しました。

ぜひご自身でコマンドを書いて、理解を深めてください。

インフラエンジニア専門の転職サイト「FEnetインフラ」

FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。

転職をお考えの方は気軽にご登録・ご相談ください。