IF文の書き方

IF文の書き方は次のように書きます。

# if文の超基本文
if (条件){
    # 条件を満たすときの文を書く
}

# if ~ elseif ~ elseの書き方
if (条件1){
    # 条件1を満たすときの文を書く
}ElseIf(条件2){
    # 条件2を満たすときの文を書く
}Else{
    # 条件1,条件2以外の場合の文を書く
}

 

 

不等号の書き方

「等しい」などの不等号はこのように記述します。

等しい -eq
等しくない -ne
より大きい(>) -gt
以上(>=) -ge
より小さい(<) -lt
以下(<=) -le

 

 

IF文の例

IF文の例です。

# if文例 -eq(等しい)
$age = 30
if ($age -eq 30){
Write-Host "パターン1" 
}Else{
Write-Host "パターン2"
}
# 実行結果:パターン1


# if文例 -ne(等しくない)
$age = 30
if ($age -ne 30){
Write-Host "パターン1" 
}Else{
Write-Host "パターン2"
}
# 実行結果:パターン2


# if文例 -gt(より大きい)
$age = 30
if ($age -gt 29){
Write-Host "パターン1" 
}Else{
Write-Host "パターン2"
}
# 実行結果:パターン1


# if文例 -ge(以上)
$age = 30
if ($age -ge 30){
Write-Host "パターン1" 
}Else{
Write-Host "パターン2"
}
# 実行結果:パターン1


# if文例 -lt(より小さい)
$age = 30
if ($age -lt 31){
Write-Host "パターン1" 
}Else{
Write-Host "パターン2"
}
# 実行結果:パターン1


# if文例 -le(以下)
$age = 30
if ($age -le 30){
Write-Host "パターン1" 
}Else{
Write-Host "パターン2"
}
# 実行結果:パターン1

$age=30
If( $age -le 6 ){           # <= 6 (= 6以下)
     Write-Host "未就学児" 
}ElseIf( $age -lt 20 ){     # < 20 (= 20より小さい)
     Write-Host "未成年"
}Else{
     Write-Host "成人" 
}
# 実行結果:成人

日付の書式を設定する

日付の書式を設定する方法です。

# Get-Date : 現在日時を取得する(これだけで実行可能)
Get-Date                                     # 2022年9月7日 22:59:28
(Get-Date).ToString("yyyy/MM/dd")            # 2022/09/07
(Get-Date).ToString("yyyy年MM月dd日")         # 2022年09月07日
(Get-Date).ToString("yyyy/MM/dd HH:mm:ss")   # 2022/09/07 22:59:28
(Get-Date).ToString("yyyyMMddHHmmss")        # 20220907225928

# 現在日時を和暦で表示
$culture = New-Object cultureinfo("ja-JP")
$culture.DateTimeFormat.Calendar = New-Object System.Globalization.JapaneseCalendar
(Get-Date).ToString("ggyy年MM月dd日", $culture)  # 令和04年09月07日


# 日付の変数で書式設定する例
$tmp_date = "2022/01/01 12:34:56"
([DateTime]$tmp_date).ToString("yyyy/MM/dd")           # 2022/01/01
([DateTime]$tmp_date).ToString("yyyy年MM月dd日")        # 2022年01月01日
([DateTime]$tmp_date).ToString("yyyy/MM/dd HH:mm:ss")  # 2022/01/01 12:34:56
([DateTime]$tmp_date).ToString("yyyyMMddHHmmss")       # 20220101123456

$culture = New-Object cultureinfo("ja-JP")
$culture.DateTimeFormat.Calendar = New-Object System.Globalization.JapaneseCalendar
([DateTime]$tmp_date).ToString("ggyy年MM月dd日", $culture) # 令和04年01月01日

変数の値をクリアする

PowerShellのコンソールで一度変数を作成すると、PowerShellを終了するまでその変数の値が残ります。つまり1回前に宣言・代入した変数が、次の実行時にも保持されてしまいます。値をクリアしその状態を回避するには次の構文を使います。

# 変数の値をクリアする
# (もともとの変数名に$がついていても)この変数名には$つけない。
Remove-Variable 変数名

# 例
# Remove-Variable str   # $strをクリアする

# 例
$str = 'abc'
Write-Host $str      # 'abc'が表示
Remove-Variable str  # $strをクリア
Write-Host $str      # なにも表示されない

 

Boolean型の代入

Boolean型の変数に代入するには、True / Falseの前に「$」を付けます

$boo1 = $TRUE     # Trueを代入する
$boo2 = $FALSE    # Falseを代入する

Write-Host $boo1  # Trueが表示される
Write-Host $boo2  # Falseが表示される

文字列の結合

PowerShellの文字列の結合は「+」で行います。

$str1 = "abc"
$str2 = "def"

# 文字列の結合には「+」を使う
$str = $str1 + $str2

Write-Host $str  # "abcdef"が表示される

 

 

文字列同士の結合がうまくいかない時

文字列同士の結合がうまくいかない時は、[string]を変数の前に付けて結合しましょう。

$str1 = "abc"
$str2 = "def"

# 文字列同士の結合がうまくいかない時は、[string]を変数の前に付けて結合します
$str = [string]$str1 + [string]$str2

Write-Host $str  # "abcdef"が表示される

 

文の区切り

PowerShellの文の区切りは、改行もしくは「;」(セミコロン)で行います。

#これは改行されているので別のコード扱い(問題なし)
$str1 = "str1"
$str2 = "str2"

#セミコロンで区切れば別のコード扱い(問題なし)
$str1 = "str1";$str2 = "str2"

#これはエラーとなる
$str1 = "str1"$str2 = "str2"

 

コメント文を入力する

PowerShellのコメント文の入力は次のようにします。

# 一行単位のコメントはシャープで書きます

<#
  複数行のコメントはこれで囲みます
#>

# 実行例
# 一行単位のコメント
Write-Host "Hello World"

<#
  複数行のコメント1
  複数行のコメント2
  複数行のコメント3
#>
Write-Host "Hello World2"