LoginSignup
2
6

More than 5 years have passed since last update.

Powershell functionでコマンドライン引数を使う

Posted at

概要

Powershell functionでコマンドライン引数を使う方法の簡単なまとめ

基本

Paramブロック内に[型名]$パラメータ名の形式で記述する。
コマンドラインから呼び出す場合、 パラメータ名を明示的に指定する方法と、パラメータ名を指定せず値だけ渡す方法(先頭のパラメータから順に渡される)がある。
パラメータ自体を省略した場合、デフォルト値が入る。

コード:

param.ps1
function global:paramTest() {
    Param([string]$Param1, [int]$Param2)

    Write-Host "Param1:$Param1, Param2:$Param2"
}

実行結果:

>./param.ps1
>paramTest -Param1 abc -Param2 100
Param1:abc, Param2:100
>paramTest -Param2 3 -Param1 aaa
Param1:aaa, Param2:3
>paramTest bbb 5
Param1:bbb, Param2:5
>paramTest
Param1:, Param2:0

switchパラメータ

Paramブロックでswitchを指定することで、指定したときTrue, 無いときFalseとなるオプション引数を使うことができる。
単純にON/OFFを指定したいパラメータに使える。

コード:

switch.ps1
function global:switchTest() {
    Param([switch]$Param1, [switch]$Param2)

    Write-Host "Param1:$Param1, Param2:$Param2"
}

実行結果:

>./switch.ps1
>switchTest -Param1 -Param2
Param1:True, Param2:True
>switchTest -Param2
Param1:False, Param2:True
>switchTest
Param1:False, Param2:False

引数一覧をそのまま取得

$args変数を使うことで、引数一覧をそのまま取得することができる。
パラメータの個数が可変の場合を扱うのに使えそう。

コード:

args.ps1
function global:argsTest() {
    Write-Host "args:$args"
}

実行結果:

>./args.ps1
>argsTest -a 1 -b 2 -c 3
args -a 1 -b 2 -c 3

パラメータ名の短縮について

コマンドライン引数でパラメータ名を指定する場合、完全な名称である必要はなく、短縮することができる。
大文字小文字関係なく前方一致で判定される。(例. パラメータ「-Abcd」は、「-abCD」でも「-aB」「-a」でも良い)

コード:

short.ps1
function global:shortTest() {
    Param([string]$Abcd, [string]$Efgh)

    Write-Host "Abcd:$Abcd, Efgh:$Efgh"
}

実行結果:

>./short.ps1
>shortTest -Abcd AAA -Efgh BBB
Abcd AAA Efgh BBB
>shortTest -aB AAA -eF BBB
Abcd AAA Efgh BBB
>shortTest -a AAA -E BBB
Abcd AAA Efgh BBB
>shortTest -a AAA -e BBB
Abcd AAA Efgh BBB

参考資料

以下のページを参考にしました。

2
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
6