fc2ブログ

(元)社内SEの徒然なる日記

powerShellの変数の宣言方法

新しい言語を覚えるときに、意外と手こずるのが変数の使い方だったりします。当然、powerShellでも苦戦しました(というか、現在進行形で理解しきれていない)。

PowerShellの変数は、頭に$を付けて記述します。さらに先頭に[型]を指定することで、型を指定した変数を使用できます。

実際には、こんな感じでしょうか?
$test = 'aa' 
[System.String]$OpeDate = Get-Date -format yyyyMMdd_HHmmss
[System.String]$LogName = 'D:¥log¥' + $OpeDate + '.log'
[boolean]$LogDateTrue = 1
[boolean]$LogDateFalse = 0


問題は型なんですよね。どれだけ種類があって、いつ、なにを、どう使えばよいのか迷います。

javaとかでクラスを使うならともかく、文字型、数値型、ブール型、あとはせいぜい日付型あたりがあれば、大抵のことは出来ると思うんですけどね。

次に、変数の型を確認する方法です。変数の型を確認するには、GetTypeコマンドレットを使用します。
PS C:\> $aaa.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object

PS C:\> $aaa.GetType().Name
String

PS C:\> $aaa.GetType().FullName
System.String


実際には、powerShell内で使ったことはなくて、デバッグの時に変数の型を調べる時に使ってます。

んで、次は配列です。変数の宣言は “型[] $変数名” で配列に設定する値は@()内にカンマ区切りで値を作ってやります。
# 1次元配列
[string[]]$addressList = @("10.101.120.10", "10.101.106.173")

# 2次元配列
[string[][]]$addressList = @(@("10.101.120.10", "APサーバ1番機" ), @("10.101.106.173", "バックアップサーバ" ) )


関数とかの戻値に対しても使えます。下記は、Test-Connectionの実行結果を配列として取得しています。
[String[]]$addressAp = @('10.101.120.30','10.101.120.10')
$pingAlive = @(Test-Connection -ComputerName $addressAp -Quiet)


なんかもう、へたなプログラミング言語よりいろいろ出来てますよね。出来ることが多いのは良いことだと思いますけど、やり過ぎのような気もするんですよね。

■ 2015.2.10追記

よくよく見ると、変数の型とか宣言とかが書いていなかったので、改めて記事を作成しました。

型については、こちらをどうぞ(PowerShellの良く使う型と宣言方法

投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end ---

スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する