新手求助:Windows 10下批量主机名转IP脚本实现及Excel导出方法
批量解析主机名到IP并导出到Excel指定列的解决方案
嘿,作为Windows脚本新手,这两个需求用PowerShell就能轻松搞定,不用额外装工具,我一步步给你讲明白:
一、前期准备
- 把你的主机名整理成一个文本文件,比如命名为
hostnames.txt,每行只放一个主机名,放在容易找到的路径(比如桌面)。 - 确保你的Windows 10已启用PowerShell(默认自带,按下Win+X选「Windows PowerShell」就能打开)。
二、PowerShell脚本实现批量解析+导出到Excel第12列
我写了带注释的完整脚本,你可以直接套用,修改路径就能用:
# 1. 替换成你自己的主机名文件路径(比如桌面路径:C:\Users\你的用户名\Desktop\hostnames.txt) $hostsFile = "C:\Users\YourUsername\Desktop\hostnames.txt" # 2. 替换成你想保存Excel文件的路径 $excelPath = "C:\Users\YourUsername\Desktop\HostToIP.xlsx" # 3. 读取主机名列表,过滤空行 $hostnames = Get-Content $hostsFile | Where-Object { $_ -notmatch '^\s*$' } # 4. 创建空数组存储解析结果 $results = @() # 5. 循环解析每个主机名 foreach ($hostname in $hostnames) { try { # 获取第一个解析到的IP地址(避免多IP的情况) $ip = [System.Net.Dns]::GetHostAddresses($hostname) | Select-Object -ExpandProperty IPAddressToString -First 1 # 成功解析则记录主机名和IP $results += [PSCustomObject]@{ 主机名 = $hostname IP地址 = $ip } } catch { # 解析失败则记录错误提示 $results += [PSCustomObject]@{ 主机名 = $hostname IP地址 = "解析失败" } } } # 6. 写入Excel文件:主机名放第1列,IP放第12列(L列) # 创建Excel后台进程 $excel = New-Object -ComObject Excel.Application $excel.Visible = $false $workbook = $excel.Workbooks.Add() $worksheet = $workbook.Worksheets.Item(1) # 写入表头 $worksheet.Cells.Item(1, 1) = "主机名" $worksheet.Cells.Item(1, 12) = "IP地址" # 逐行写入数据 $row = 2 foreach ($result in $results) { $worksheet.Cells.Item($row, 1) = $result.主机名 $worksheet.Cells.Item($row, 12) = $result.IP地址 $row++ } # 保存并关闭Excel,释放进程避免残留 $workbook.SaveAs($excelPath) $workbook.Close() $excel.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($worksheet) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) | Out-Null [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null [System.GC]::Collect() [System.GC]::WaitForPendingFinalizers() Write-Host "操作完成!结果已保存到 $excelPath"
三、使用步骤
- 把脚本复制到记事本,保存为
HostToIP.ps1(注意保存类型选「所有文件」,编码选UTF-8)。 - 修改脚本里的
$hostsFile和$excelPath路径,替换成你自己的实际路径(比如把YourUsername改成你的Windows用户名)。 - 右键点击脚本文件,选择「用PowerShell运行」;如果遇到权限提示,先打开PowerShell输入
Set-ExecutionPolicy RemoteSigned,按Y确认后再运行脚本。
四、注意事项
- 脚本会自动跳过空行,解析失败的主机名会标记「解析失败」,不会中断整个批量任务。
- Excel文件里第1列是主机名,第12列是对应IP,完全不用担心对应关系混乱!
- 脚本运行后如果任务管理器里还有残留的Excel进程,可以手动结束它(脚本已做进程释放处理,一般不会出现)。
内容的提问来源于stack exchange,提问作者shabbeer




