在此处完成powershell noob。我正试图做以下事情:
- 从文本文件导入IP地址列表
- 获取每个IP地址的主机名。如果无法,请提供失败原因
- 在CSV中逐行导出IP地址和主机名(或错误(
我试图使用以下脚本,但我不知道什么是IP地址,因为有一些错误:
get-content .dnsip.txt | ForEach-Object {([system.net.dns]::GetHostByAddress($_)).hostname
有人能帮我写一个能做到这一点的剧本吗?
谢谢!
您可以执行以下操作:
Get-Content .dnsip.txt | ForEach-Object {
$obj = "" | Select-Object IPAddress,Hostname
try {
$obj.Hostname = ([system.net.dns]::GetHostByAddress($_)).hostname
} catch {
$obj.Hostname = 'Unknown Host'
}
$obj.IPAddress = $_
$obj
} | Export-Csv -Path Output.csv -NoType
解释:
在每次迭代过程中,都会创建一个新对象$obj
,其中两个属性IPAddress
和Hostname
设置为空字符串。try {}
块用于尝试使用您的方法检索Hostname
值。如果成功,Hostname
将被分配该命令返回的值。如果抛出异常,它将被catch {}
块捕获。在侧catch {}
中,Hostname
属性被赋予值Unknown Host
。然后为IPAddress
分配从您的Get-Content
处理的当前项目($_
(。
所有自定义对象都通过Export-Csv
导出到Output.csv
。-NoType
开关可防止在CSV文件的顶部打印数据类型信息。