最近在学习 Powershell 编程, 发现 Powershell 是一门简单但是非常强大的语言, 主要是用于 Windows 服务器上. 用于完成各项服务器维护的任务.
下面的 Powershell 会测试命令行给的IP段里的所有机器是否可以联接, 也就是IPv4 地址的最后一位从1变化到254, 0和255 有特殊用途,不作为具体机器的地址. 你可以同时在命令行里指定多个IP段.
测试联结的命令是 ping 如果联接可以成功, 则返回是 0 否则是 1. Ping 命令的参数 -n 1 指定的是每个IP地址只尝试联接1次, 这样不会让脚本检查显得缓慢. 在 DOS/Windows 批处理中, %errorlevel% 变量用于返回上一次程序/命令执行的情况, 而在 Powershell 中, 需要用 $LASTEXITCODE 来检查.
在 Powershell 中, 可以使用 $? 来判断上条命令的执行情况 True 或者是 False. 而 $LASTEXITCODE 只是返回上个WIN32程序的返回值.
<# A Powershell Script to check machines are up/down in a IP Example: PPing 192.168.0 192.168.3 https://HelloACM.com #> if ($args.count -eq 0) { Write-Host "使用例子: PPing 192.168.0" exit } for ($j = 0; $j -lt $args.count; $j ++) { # loop current ip range $ip = $args[$j] + "." for ($i = 1; $i -lt 255; $i ++) { # get each ip $cur = $ip + $i # ping once ping -n 1 $cur | Out-Null if ($LASTEXITCODE -eq 0) { Write-Host "$cur 在线" } else { Write-Host "$cur 离线" } } }
在 Powershell 中 用对象 $args 来获取命令行参数 . count 属性返回总共有多少个命令行参数. 而访问每一个参数的时候就像访问数组一样, 第一个参数是 $args[0].
英文同步: https://helloacm.com/batch-check-machines-updown-in-ip-ranges-using-powershell/
强烈推荐
- 英国代购-畅购英伦
- TopCashBack 返现 (英国购物必备, 积少成多, 我2年来一共得了3000多英镑)
- Quidco 返现 (也是很不错的英国返现网站, 返现率高)
- 注册就送10美元, 免费使用2个月的 DigitalOcean 云主机(性价比超高, 每月只需5美元)
- 注册就送10美元, 免费使用4个月的 Vultr 云主机(性价比超高, 每月只需2.5美元)
- 注册就送10美元, 免费使用2个月的 阿里 云主机(性价比超高, 每月只需4.5美元)
- 注册就送20美元, 免费使用4个月的 Linode 云主机(性价比超高, 每月只需5美元) (折扣码: PodCastInit2022)
- PlusNet 英国光纤(超快, 超划算! 用户名 doctorlai)
- 刷了美国运通信用卡一年得到的积分 换了 485英镑
- 注册就送50英镑 – 英国最便宜最划算的电气提供商
- 能把比特币莱特币变现的银行卡! 不需要手续费就可以把虚拟货币法币兑换
微信公众号: 小赖子的英国生活和资讯 JustYYUK