2016年8月30日火曜日

PowerShell IPアドレス取得とWrite-Debugの罠

実行HOSTのIPアドレスを取得するスクリプトで、取得した値をWrite-Debugで出力するスクリプトを作った。
ちなみに、仮想(VM)が入っているマシンなので、IPが3個存在する。

$DebugPreference="Continue"

$IPAddress = [system.net.dns]::GetHostAddresses((hostname)) | where
{$_.AddressFamily -eq "InterNetwork"} | select -ExpandProperty
IPAddressToString

#IPが複数あるので、TBLに格納する。

$ipTbl = $ip -split " "

# 元の取得値を表示
Write-debug $IPAddress
Write-debug "$IPAddress"

# IPを一個づつ表示
$MaxIpCnt = $ipTbl.length
for( $ii=0 ;$ii -lt $MaxIpCnt;$ii++)
{
    Write-Debug $ipTbl[$ii]
}


実行結果で、Write-Debugの一個目は、エラーとなる。
Stringにせよと。

なので、「”」 で括ったら出力された。



Write-Debug : パラメーター 'Message' で必要とされる型 'System.String' に
'System.Object[]' を変換できません。指定されたメソッドはサポートされていません。



デバッグ: XXX.254.XXX.XXX 129.XXX.XXX.XXX 192.XXX.XXX.1
デバッグ: XXX.254.XXX.XXX
デバッグ: 129.XXX.XXX.XXX
デバッグ: 192.XXX.XXX.1


Write-Debugの罠というか、出力する変数が数値とスペースが混じっているので認識できなかったようだ。

本日の河上選手:お休み
  9/14 ~  三国のG3