使用CSV文件通过IP地址从网络中提取计算机名称

时间:2012-04-18 17:01:04

标签: powershell

我一直试图弄清楚为什么我的代码无效 我在CSV文件中有一个IP地址列表。从我想要获取计算机名称的IP地址列表中。当我执行时,无论我得到什么

使用“1”参数调用“GetHostByAddress”的异常:“指定了无效的IP地址。” 在行: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]")

2 个答案:

答案 0 :(得分: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()) }

答案 1 :(得分:0)

如果您的示例文件是正确的,我建议这样做:

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

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