使用 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