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

Rad*_*ast 3 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]")
Run Code Online (Sandbox Code Playgroud)

Sha*_*evy 7

更新:添加了Trim()调用以删除前导或尾随空格(如果存在).

删除引号并调用value属性:

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

要解决所有地址:

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

您可以使用-as类型运算符仅传递有效地址:

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