使用 powershell脚本,检测局域网 ip 能否 ping 通并将结果记录到 execl 文档。

195 阅读1分钟

使用 powershell 脚本,检测局域网 ip 能否 ping 通并将结果记录到 execl 文档。

脚本内容:

# 设置安全协议为 TLS 1.2,以确保下载模块时使用最新的安全协议
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# 检查是否已安装 NuGet 模块
if (-not (Get-Module -Name NuGet -ListAvailable)) {
    Write-Host "未找到 NuGet 模块,将进行安装..."
    
    # 安装 NuGet 模块
    try {
        Install-Module NuGet -Force -Scope CurrentUser -AllowClobber -ErrorAction Stop
        Write-Host "NuGet 模块安装成功!"
    } catch {
        Write-Host "安装 NuGet 模块时出错:$($_.Exception.Message)"
    }
} else {
    Write-Host "NuGet 模块已安装。"
}

# 检查是否已安装 ImportExcel 模块
if (-not (Get-Module -Name ImportExcel -ListAvailable)) {
    Write-Host "未找到 ImportExcel 模块,将进行安装..."

    # 尝试安装 ImportExcel 模块
    try {
        Install-Module ImportExcel -Force -Scope CurrentUser -AllowClobber -ErrorAction Stop
        Write-Host "ImportExcel 模块安装成功!"
    } catch {
        Write-Host "安装 ImportExcel 模块时出错:$($_.Exception.Message)"
    }
} else {
    Write-Host "ImportExcel 模块已安装。"
}

# 导入 ImportExcel 模块,以便后续使用 Export-Excel 命令
Import-Module ImportExcel

# 获取输入的 IP 地址范围 (如果范围较大而未使用的较多,可能检测时间会比较长)
$ipRange = Read-Host "请输入 IP 地址范围(如 192.168.201.1-10)"

# 解析 IP 地址段
$startIp, $endIp = $ipRange -split '-'

# 获取 IP 地址段的前缀
$ipPrefix = $startIp -replace '\.\d+$'

# 创建结果数组
$results = @()

# 遍历 IP 地址并 Ping 测试
for ($i = [int]$startIp.Split('.')[3]; $i -le [int]$endIp; $i++) {
    $currentIp = "$ipPrefix.$i"
    $result = Test-Connection -ComputerName $currentIp -Count 1 -Quiet
    $results += [PSCustomObject]@{
        'IP' = $currentIp
        '测试结果' = if ($result) { "可以 Ping 通" } else { "无法 Ping 通" }
    }
}

# 将结果导出到 Excel 文件,保存路径 path 可以自己修改一下。
$results | Export-Excel -Path 'ping_test_results.xlsx' -AutoSize -Show