[玩转系统] 在 PowerShell 中 Ping 计算机列表 [3 种方法]
作者:精品下载站 日期:2024-12-14 05:27:38 浏览:14 分类:玩电脑
在 PowerShell 中 Ping 计算机列表 [3 种方法]
在 PowerShell 中 Ping 计算机列表的不同方法
我们可以使用多种方法在 PowerShell 中 ping 计算机列表。现在,ping 是什么意思?对计算机执行 Ping 操作意味着确定联网计算机是否可用且有响应。如果联网计算机(我们也可以将其称为目标计算机)可用并做出响应,它将向发起 ping 请求的发送者发送回复。来自目标计算机的此回复表明它已在线并正在运行。
我们还对计算机或计算机列表执行 ping 操作,以检查网络问题并验证网络连接。例如,对计算机执行 ping 操作可以帮助我们了解问题是与目标计算机本身有关还是与网络连接有关。要 ping 计算机,我们可以使用以下方式:
- 使用
Test-Connect
Cmdlet - 使用
WMI
和Get-WmiObject
Cmdlet - 使用 System.Net.NetworkInformation.Ping 类
为了了解如何 ping 计算机列表,我们将所有计算机的 IP 保存在包含以下数据的文本文件 (computersList.txt
) 中。
ComputersList.txt的内容:
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
请注意,您也可以将上述 IP 地址替换为计算机名称。
现在,我们知道什么是 ping 以及为什么使用它。我们还有一个要 ping 的计算机列表,因此让我们讨论 ping 这些计算机的各种方法。
使用 Test-Connect
Cmdlet
要在 PowerShell 中 ping 计算机的 IP 列表:
- 使用
Get-Content
cmdlet 从computerList.txt
检索计算机列表并将其保存在变量中。 - 使用
foreach
循环迭代我们在上一步中创建的计算机列表中的每台计算机。 在
foreach
循环的每次迭代中:- 使用
Test-Connect
cmdlet 发送 ping 请求并将回复保存在变量中。
- 使用
- 使用
if-else
打印当前计算机是否根据指定条件启动/关闭。
使用测试连接 Cmdlet:
$computers = Get-Content ".\computersList.txt"
foreach ($computer in $computers) {
$pingComputer = Test-Connection $computer -Count 1 -Quiet
if ($pingComputer) {
Write-Host "$computer is up"
} else {
Write-Host "$computer is down"
}
}
输出 :
192.168.1.1 is up
192.168.1.2 is down
192.168.1.3 is down
192.168.1.4 is down
首先,我们使用 Get-Content
cmdlet 读取 computersList.txt
文件的内容并将其保存在 $computers
变量中。 computersList.txt
位于当前目录;您可以将此文件放在本地计算机上的任何位置。 computersList.txt
包含计算机的 IP,但此处也可以使用计算机名称。
接下来,我们使用 foreach
循环来迭代 $computers
数组。 在每次迭代中,我们使用 Test-Connection
以及 -Count
和 -Quiet
参数来 ping 当前计算机,并将回复保存在 >$pingComputer
变量。此处,Test-Connection
cmdlet 将 Internet 控制消息协议 (ICMP) 回显请求数据包 (ping) 发送到一台或多台计算机。
我们可以使用 Test-Connection
cmdlet 来检查特定计算机是否在 IP 网络上可用且响应。我们还可以使用它的参数来提及发送和接收机器,设置超时和 ping 计数,将命令作为后台作业运行,以及验证或配置特定连接。您可以在这里找到更多相关信息。
Test-Connection
cmdlet 返回 TestConnectionCommand+PingStatus
作为我们可以在 PowerShell 中使用的对象。但是,在上面的示例中,我们没有将 TestConnectionCommand+PingStatus 作为对象获取;而是将其作为对象获取。为什么?这是因为我们使用了-Quiet
参数,该参数返回一个布尔值,如果目标机器已启动,则返回true
;否则,假
。此外,-Count
参数用于指定一次仅 ping 一台计算机。
最后,我们使用 if-else
块并检查 $pingComputer
是否为 true
。如果是,则执行 if 块;否则,else 块将运行。最后,为了在 PowerShell 控制台上显示消息,我们使用了 Write-Host
cmdlet,它用于将自定义输出写入主机(主机指的是 PowerShell 控制台)。
同样,可以使用计算机名称而不是 IP 进行 ping 操作。
使用测试连接 Cmdlet:
$computers = Get-Content ".\computersList.txt"
foreach ($computer in $computers) {
$pingComputer = Test-Connection $computer -Count 1 -Quiet
if ($pingComputer) {
Write-Host "$computer is up"
} else {
Write-Host "$computer is down"
}
}
输出 :
DESKTOP-THATKM is up
CYBERHOST-PC is down
TAHIR-DESKTOP is down
使用 WMI
和 Get-WmiObject
Cmdlet
要在 PowerShell 中 ping 计算机的 IP 列表:
- 使用
Get-Content
cmdlet 从computerList.txt
检索计算机列表并将其保存在变量中。 - 使用
foreach
循环迭代我们在上一步中创建的计算机列表中的每台计算机。 在
foreach
循环的每次迭代中:- 使用
Win32_PingStatus
cmdlet 发送 ping 请求并将提取的状态存储在变量中。
- 使用
- 将
if-else
与-eq
运算符结合使用可根据给定条件打印当前计算机是否处于启动/关闭状态。 - 使用
try-catch
块将代码括在foreach
中,以避免破坏脚本并在发生异常时进行处理。
使用 WMI 和 Get-WmiObject:
$computers = Get-Content ".\computersList.txt"
foreach ($computer in $computers) {
try {
$pingComputer = Get-WmiObject -Class Win32_PingStatus -Filter "Address='$computer'" |
Select-Object -ExpandProperty StatusCode
if ($pingComputer -eq 0) {
Write-Host "$computer is up"
} else {
Write-Host "$computer is down"
}
} catch {
Write-Host "$computer is down"
}
}
输出 :
192.168.1.1 is up
192.168.1.2 is down
192.168.1.3 is down
192.168.1.4 is down
与前面的示例一样,我们使用 Get-Content
cmdlet 访问 computersList.txt
的数据并将其保存在 $computers
数组中。然后,我们使用 foreach
语句循环遍历 $computers
数组。
在每次迭代中,我们使用 Get-WmiObject cmdlet 查询名为 Win32_PingStatus
的 Windows Management Instrumentation (WMI) 类,并获取当前目标计算机 ($computer
) 的 ping 请求状态)。首先,我们使用-Filter
参数来编写目标计算机。 接下来,我们使用 Select-Object
cmdlet 从接收到的 WMI 对象中提取 StatusCode
属性;最终结果存储在 $pingComputer
变量中。
然后,我们使用 if
语句和 -eq
比较运算符来确定 $pingComptuer
的值是否等于 0
或不。如果是,则显示当前计算机已启动;否则,它就下来了。您可能已经注意到,我们用 try-catch
块包装了 foreach
循环体,以在发生异常时对其进行处理。
现在,让我们使用计算机的名称(也称为主机名)来 ping 不同的计算机。
使用 WMI 和 Get-WmiObject:
$computers = Get-Content ".\computersList.txt"
foreach ($computer in $computers) {
try {
$pingComputer = Get-WmiObject -Class Win32_PingStatus -Filter "Address='$computer'" |
Select-Object -ExpandProperty StatusCode
if ($pingComputer -eq 0) {
Write-Host "$computer is up"
} else {
Write-Host "$computer is down"
}
} catch {
Write-Host "$computer is down"
}
}
输出 :
DESKTOP-THATKM is up
CYBERHOST-PC is down
TAHIR-DESKTOP is down
使用 System.Net.NetworkInformation.Ping 类
要在 PowerShell 中 ping 不同计算机的 IP 列表:
- 使用
Get-Content
cmdlet 从computerList.txt
访问计算机列表并将其保存在变量中。 - 使用
foreach
循环迭代我们在上一步中创建的计算机列表中的每台计算机。 在
foreach
的每次迭代中:- 使用
New-Object
cmdlet 创建System.Net.NetworkInformation.Ping
类的对象并将其保存在变量中。
- 使用
- 使用
.Send()
方法向当前目标计算机发送 ping 请求并将响应保存在变量中。 - 使用
if-else
打印当前计算机是否根据指定条件启动/关闭。 - 使用
try-catch
将代码括在foreach
中,以便在发生异常时进行处理。
使用.Ping类:
$computers = Get-Content ".\computersList.txt"
foreach ($computer in $computers) {
try {
$pingComputer = New-Object System.Net.NetworkInformation.Ping
$response = $pingComputer.Send($computer)
if ($response. Status -eq "Success") {
Write-Host "$computer is up"
} else {
Write-Host "$computer is down"
}
} catch {
Write-Host "$computer is down"
}
}
输出 :
192.168.1.1 is up
192.168.1.2 is down
192.168.1.3 is down
192.168.1.4 is down
此代码与前一个代码类似,只是有一些变化。首先,我们使用 New-Object
cmdlet 创建 System.Net.NetworkInformation.Ping
类的对象并将其保存在 $pingComputer
中> 变量。接下来,我们创建了此类的一个对象来访问其 .Send()
方法,以将 $computer
作为参数来发送 ping 请求。
.Send()
方法向给定计算机发送 ICMP 回显消息,并从该计算机获取相应的 ICMP 回显响应;我们将此响应保存在 $response
变量中。最后,我们使用 if
语句和 -eq
运算符来确定 $response.Status
是否等于 Success
.如果是,则表明目标机器已启动并正在运行;否则,它就下来了。最后,我们使用 try-catch 块来避免破坏脚本并处理发生的异常。
让我们使用相同的代码通过计算机名称来 ping 计算机列表。
使用.Ping类:
$computers = Get-Content ".\computersList.txt"
foreach ($computer in $computers) {
try {
$pingComputer = New-Object System.Net.NetworkInformation.Ping
$response = $pingComputer.Send($computer)
if ($response. Status -eq "Success") {
Write-Host "$computer is up"
} else {
Write-Host "$computer is down"
}
} catch {
Write-Host "$computer is down"
}
}
输出 :
DESKTOP-THATKM is up
CYBERHOST-PC is down
TAHIR-DESKTOP is down
这就是如何在 PowerShell 中 ping 计算机列表的全部内容。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag