PowerShell 基本

変数

変数

$a = 1       <- Int32型
$a = 1.0     <- Double型
$a = "1"     <- String型
  • スペース等を含む変数名
    ${a b c} = 1    <- "a b c"という名前の変数に1を代入している

変数(型指定)

$a = 1.0l        <- Int64型
$a = 1.0d        <- Decimal型
$a = [Single]1.0 <- Single型
$a = [String]1.0 <- String型

配列

  • 一次元
    $a = 1,2,3,4     <- Object[]型
    $a = @(1,2,3,4)  <- このような指定でもOK
    $a[0]            <- 上の配列の場合、結果として1が出力される
  • n次元
    $a = @((1,2,3,4),("a","b","c","d"))
    $a[1][1]         <- 上の配列の場合、結果としてaが表示される

配列(型指定)

$a = [int[]]@(1,2,3,4)
  • キャスト
    $a = [int[]]@(1.0l,2,3,4)    <- 1要素目だけInt64型を指定しているが、[int[]]により型指定されているので、1要素目はInt32型になる

配列(特殊な指定方法)

  • 省略形
    $a = 1..10    <- "$a = 1,2,3,4,5,6,7,8,9.10" と同じ
  • 1要素だけの配列
    $a = @(1)
    $a = ,1      <- このような指定でもOK

連想配列(ハッシュ)

  • 宣言と利用
    $a = @{foo = 1; bar = 2}    <- @{}で囲み、;で区切る
    $a["foo"]                   <- 上の連想配列の場合、結果として1が出力される
  • 一覧
    $a.Keys      <- キー一覧
    $a.Values    <- 値一覧
  • 存在確認
    $a.ContainsKey("foo")    <- 指定したキーに対する値が存在していればTrue、なければFalse    ContainsKeyではなくContainsでも同じ
    $a.ContainsValue(1)      <- 指定した値に対するキーが存在していればTrue、なければFalse
  • 追加
    $a.Add("baz", 3)
  • 削除
    $a.Remove("baz")

スコープ

種類

  • スコープを指定せずに宣言すると、localスコープとなる
    種類意味使用例
    globalどこからでも(別のスクリプトからでも)アクセスできる$global:a = 1
    script同じスクリプト内ならどこからでもアクセスできる$script:a = 1
    local同じブロックと子ブロックからアクセスできる$local:a = 1
    private同じブロックからのみアクセスできる$private:a = 1

Function Set-Value {
    $local:a = "LOCAL SCOPE"
    Set-SubValue
    Write-Host $a
}

Function Set-SubValue {
    $private:a = "PRIVATE SCOPE"
    Write-Host $a
}

$a = "SCRIPT SCOPE"
Set-Value
Write-Host $a
  • 実行結果
    PRIVATE SCOPE
    LOCAL SCOPE
    SCRIPT SCOPE

型変換

Bool

PS> [bool]1,[bool]0
True
False

Char

PS> [char]65
A

ASCII

PS> [byte][char]'A'
65

Currency

PS> "{0:C}" -f 1000
\1,000

DateTime

PS> [DateTime]"2012/01/01"
2012年1月1日 0:00:00

基数変換

n進数 -> 10進数

PS> [convert]::ToInt32("n進数の値", n)

2進数を10進数に変換する

PS> [convert]::ToInt32("1000", 2)
8

16進数を10進数に変換する

  • 2つの式の結果は同じ
    PS> [convert]::ToInt32("1000", 16)
    PS> 0x1000                           <- 0xの後に16進数の数値を入力する
    4096

条件分岐

繰り返し


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-12-12 (金) 13:54:00 (1343d)