如何修改PowerShell脚本实现输入IP范围即可查询在线PC信息
网段设备信息查询PowerShell脚本(无需txt设备列表)
以下为修改完成的脚本,支持直接配置IP段即可自动扫描在线设备,输出IP、设备名称、登录用户、设备型号等信息:
# -------------------------- 配置项 -------------------------- # 目标网段前缀,比如网段是192.168.2.xxx 就填 "192.168.2." $ipSegmentPrefix = "192.168.1." # 扫描起始IP后缀 $scanStart = 1 # 扫描结束IP后缀 $scanEnd = 254 # -------------------------- 配置结束 -------------------------- # 自动生成IP列表并筛选在线设备 $onlineDeviceList = for ($ipSuffix = $scanStart; $ipSuffix -le $scanEnd; $ipSuffix++) { $currentIp = $ipSegmentPrefix + $ipSuffix # ping1次验证存活,超时跳过 if (Test-Connection -ComputerName $currentIp -Quiet -Count 1 -ErrorAction SilentlyContinue -TimeoutSeconds 1) { $currentIp } } function Get-DeviceDetailInfo { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] [string[]]$DeviceList ) foreach ($device in $DeviceList) { $result = @{ "IP地址" = $device "设备名称" = "查询失败" "当前登录用户" = "无权限/查询超时" "设备型号" = "查询失败" } try { # 一次性拉取设备系统信息,减少重复请求 $sysInfo = Get-CimInstance -Class CIM_ComputerSystem -ComputerName $device -ErrorAction Stop $result["设备名称"] = $sysInfo.Name $result["当前登录用户"] = $sysInfo.UserName $result["设备型号"] = $sysInfo.Model # 拉取网卡信息,过滤IPv6地址取第一个可用IPv4 $networkInfo = Get-CimInstance -ComputerName $device -ClassName Win32_NetworkAdapterConfiguration -Filter "IPEnabled = 'True'" -ErrorAction Stop $result["网卡IP"] = ($networkInfo.IPAddress | Where-Object { $_ -notmatch ':' } | Select-Object -First 1) } catch { # 异常不中断整体扫描 continue } [PSCustomObject]$result } } # 执行查询并输出可视化网格视图 Get-DeviceDetailInfo -DeviceList $onlineDeviceList | Out-GridView -Title "网段设备信息查询结果"
使用说明
- 运行前先调整脚本开头配置项里的3个参数,匹配你需要扫描的IP网段范围
- 运行脚本的Windows账号需要拥有目标设备的WMI/CIM查询权限,且目标设备防火墙未拦截WMI请求端口
- 扫描耗时和网段规模正相关,单C段254个IP扫描耗时约30~60秒
优化说明
- 修复了原有脚本函数参数未实际生效、重复请求设备信息的问题
- 增加了异常捕获逻辑,单个设备查询失败不会终止整个扫描任务
- 增加了1秒ping超时设置,大幅提升扫描速度
- 自动过滤IPv6地址,只保留IPv4信息输出
内容的提问来源于stack exchange,提问作者chkdsk
相关产品推荐
相关产品推荐

