这里遇到了一个问题-运行Powershell 1.0
代码(假设传入的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地址是可点击的--它们在运行脚本的机器上没有正确解析。这导致错误“未找到所请求的类型的数据”,指的是它无法将IP解析为DNS名称。
发布于 2014-04-16 16:08:33
我有两个想法你可以试试:
GetHostByAddress()支持string和ipaddress。因此,在运行函数之前,请尝试转换为ipaddress-type。
if(Test-Connection -ComputerName $ipAddress -Count 1 -ea,沉默地继续){写主机$ipAddress $hostData =-ea}发布于 2016-08-24 00:48:06
运行PS3时,在我们的域中遍历子网时会看到错误。尤其是偏远的地方。我正在检查我们域上的5个不同的C类子网,以确保没有我们在AD中没有的设备。也有可能有些设备不是有主机名的PC:路由器、交换机、防火墙、扫描仪等等。当我的代码到达我的本地办公室时,没有错误。
我不使用文件,而是通过脚本中的代码生成子网。
https://stackoverflow.com/questions/23114234
复制相似问题