3

私は数日間、コードが機能しない理由を理解しようとしています。
ほとんどの場合、CSVファイルにIPアドレスのリストがあります。このIPアドレスのリストから、コンピューター名を取得したいと思います。何を手に入れても実行すると

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

以下に、CSVファイルと使用されるコードの例を示します。

CSVファイル


192.168.0.11192.168.0.12192.168.0.13
192.168.0.14
_
_

使用されているコード:

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

2 に答える 2

7

更新:Trim()呼び出しを追加して、先頭または末尾のスペースが存在する場合は削除します。

引用符を削除し、valueプロパティを呼び出します。

$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 type演算子を使用して、有効なアドレスのみを渡すことができます。

import-csv  C:\test\test\test.csv | 
where-object {$_.Value.Trim() -as [ipaddress]} | 
foreach-object { [System.Net.dns]::GetHostbyAddress($_.Value.Trim()) }
于 2012-04-18T19:29:38.250 に答える
0

サンプルファイルが正しい場合は、次のようにすることをお勧めします。

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

[System.Net.dns]::GetHostbyAddress($foo[0])
于 2012-04-18T18:12:06.633 に答える