2014-04-16 29 views
0

一个问题难倒了这里 - 运行PowerShell的1.0PowerShell的错误 - GetHostByAddress

代码(假设IP地址是在被传递有效):

$ips = @(Import-CSV $attachmentLocation) 
foreach ($ip in $ips){ 
    $ipAddress = $ip.IPAddress 
$length = $ipaddress.length 
write-host "Length is: ($length)" 
    if(Test-Connection -ComputerName $ipAddress -Count 1 -ea silentlycontinue) { 
     write-host $ipAddress 
     $hostData = ([Net.Dns]::GetHostByAddress($ipAddress)).HostName 
    } 
} 

输出:

Length is: (11) 
10.xx.xx.xx 
Exception calling "GetHostByAddress" with "1" argument(s): "The requested name is valid, but no data of the requested type was found" 
At FileName:13 char:43 
+   $hostData = ([Net.Dns]::GetHostByAddress <<<< ($ipAddress)).HostName 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : DotNetMethodException 

如果我运行以下它工作正常 - 似乎是数据类型问题(im传递字符串值):

$hostData = ([Net.Dns]::GetHostByAddress("10.xx.xx.xx")).HostName 

工作代码:

$ipAddress = "10.xx.xx.xx" 
$hostData = ([Net.Dns]::GetHostByAddress($ipAddress)).HostName 

答: 问题是与ActiveDirectory域名DNS解析不是命令,而一些IP地址是ping命令他们不要在那里运行脚本的机器上妥善解决。这导致错误'找不到所请求类型的数据'是指它无法将IP解析为DNS名称。

+0

$ ipaddress从哪里来?任何机会都有尾随空白?你在那个地址有RDNS吗? – mjolinor

+0

没有结尾的空格,当我直接以字符串的形式输入IP地址时工作正常。已经搜索了互联网已经没有成功。谢谢回复! –

+0

什么意思是“该域名存在问题”?你能否进一步解释? – Suncatcher

回答

2

我有两个想法,你可以尝试:

  1. GetHostByAddress()支持stringipaddress。所以在运行该函数之前,请尝试将其转换为ipaddress类型。

    如果(试验连接-ComputerName $ ip地址-Count 1 -ea silentlycontinue){ 写主机$ ip地址 $ hostData =([Net.Dns] :: GetHostByAddress(([IPADDRESS] $ ip地址))) .HostName }

  2. 如果您使用PS 1.0,那么您的首要任务应该是将机器升级到至少PowerShell 2.0。在PS 1.0中没有什么效果。

+0

不,它不起作用。有一个很好的理由,我没有提供输出见下面的问题的第二行: “代码(假设一个有效的IP地址被传入):” 因此不需要发送输出为假设已输入有效的IP地址。 感谢您的回复! –

+0

我们需要看看'$ ipaddress'是如何创建的,我们需要看到它的值(如果你真的需要用X代替数字),我们需要看到'$ ipaddress.count'。当我们没有得到必要的信息时,我们无法帮助您。该示例在PS 2.0上完美运行 - >。 –

+0

我已经添加了'输出'不知道什么帮助它会给你其他然后确认它的字符串不是我在描述中确认的对象“(即时通讯字符串值):”。希望它现在更清晰。 –

0

运行PS3时,在我们的域上遍历子网时出现错误。特别是远程位置。 我正在检查我们域中的5个不同的C类子网,以确保没有AD中没有的设备。 也有可能有些设备不是带有主机名的PC:路由器,交换机,防火墙,扫描仪等。 当我的代码到达我的本地办公室时,没有错误。

我没有使用文件,而是通过脚本中的代码生成子网。