3

几天来我一直试图弄清楚为什么我的代码不起作用。
我几乎有一个 CSV 文件中的 IP 地址列表。从这个 IP 地址列表中,我想获取计算机名称。当我执行时,无论我得到什么

使用“1”参数调用“GetHostByAddress”的异常:“指定的 IP 地址无效。” 在 line:3 char:35 + [System.Net.dns]::GetHostbyAddress <<<< ("$foo[0]") + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException

这是 CSV 文件的示例和使用的代码:

CSV 文件


192.168.0.11
192.168.0.12
192.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 类型运算符仅传递有效地址:

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 回答