You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

新手求助: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"

三、使用步骤

  1. 把脚本复制到记事本,保存为HostToIP.ps1(注意保存类型选「所有文件」,编码选UTF-8)。
  2. 修改脚本里的$hostsFile$excelPath路径,替换成你自己的实际路径(比如把YourUsername改成你的Windows用户名)。
  3. 右键点击脚本文件,选择「用PowerShell运行」;如果遇到权限提示,先打开PowerShell输入Set-ExecutionPolicy RemoteSigned,按Y确认后再运行脚本。

四、注意事项

  • 脚本会自动跳过空行,解析失败的主机名会标记「解析失败」,不会中断整个批量任务。
  • Excel文件里第1列是主机名,第12列是对应IP,完全不用担心对应关系混乱!
  • 脚本运行后如果任务管理器里还有残留的Excel进程,可以手动结束它(脚本已做进程释放处理,一般不会出现)。

内容的提问来源于stack exchange,提问作者shabbeer

火山引擎 最新活动