2012-04-18 11 views
3

私のコードが動作しない理由を数日間把握しようとしています。
私はCSVファイルにIPアドレスのリストを持っています。このIPアドレスのリストからコンピュータ名を取得したいと思う。私が何を得ても実行するときCSVファイルを使用してネットワークからIPアドレスでコンピュータ名を引き出す

"1"引数で "GetHostByAddress"を呼び出す例外: "無効なIPアドレスが指定されました。"ラインで :3文字:35 + [System.Net.dns] :: GetHostbyAddress < < < <( "$ fooの[0]") + CategoryInfo:NotSpecified:(:) []、MethodInvocationException + FullyQualifiedErrorId。

CSVファイル


192.168.0.11
192.168.0:

DotNetMethodExceptionここでCSVファイルと使用されるコードの一例です。 12
192.168.0.13
192.168.0.14

使用されているコード:

$foo = get-content C:\test\test\test.csv | ? { $_ -notmatch "Value" } 

[System.Net.dns]::GetHostbyAddress($foo[0]) 

答えて

7

UPDATE:

$foo = import-csv C:\test\test\test.csv 
[System.Net.dns]::GetHostbyAddress("$foo[0]") 
+0

私のボックス(7 + powershell 2.0)では、$ foo [0] .valueまたは$ _。valueは常に$ nullです。私はOPのサンプルからコピー&ペーストからcsvを作成しました。ヒントはありますか? thks –

+0

$ foo [0] .valueまたは$ _。valueが期待通りに機能します。私はipcsvの代わりにgcを使用したことがわかります.Valueがnullを返すのはなぜでしょうか。 –

+0

番号。私は答えにgcを使用しました。私はあなたについてimport-csvでサンプルを話します... –

0

あなたのサンプルファイルが正しければ、私はこのように行うことをお勧め: Trim()呼び出しを追加して、先頭または末尾のスペースが存在する場合は削除します。

引用符を削除し、値のプロパティを呼び出す:

$foo = import-csv C:\test\test\test.csv 
[System.Net.dns]::GetHostbyAddress($foo[0].Value.Trim()) 

をすべてのアドレスを解決するには:

import-csv C:\test\test\test.csv | 
foreach-object { [System.Net.dns]::GetHostbyAddress($_.Value.Trim()) } 

あなたが唯一の有効なアドレスに渡すため-as型演算子を使用することができます。

import-csv C:\test\test\test.csv | 
where-object {$_.Value.Trim() -as [ipaddress]} | 
foreach-object { [System.Net.dns]::GetHostbyAddress($_.Value.Trim()) }