我一直试图弄清楚为什么我的代码无效 我在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]")
答案 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])