【发布时间】:2014-12-03 08:55:31
【问题描述】:
我目前正在尝试编写一个脚本,用于查询 AD 以获取计算机列表,ping 计算机以确定哪些计算机仍处于活动状态,然后远程登录到所有可 ping 计算机上的特定端口。我正在寻找的输出是 AD 中可 ping 的计算机的完整列表,我无法通过 telnet 连接到所述端口。
我读过thesefewquestions,但他们并没有完全理解我想要做什么。我只是想看看telnet连接是否成功,无需进入telnet(或自动退出telnet),然后继续下一台机器测试。我脚本的 AD 和 ping 部分已设置,我只是被困在这里。我尝试过的事情并没有按计划进行。
如果需要,这里是脚本第一部分的代码:
Get-ADComputer -Filter * -SearchBase 'DC=hahaha,DC=hehehe' | ForEach {
$computerName = $_.Name
$props = @{
ComputerName = $computerName
Alive = $false
PortOpen = $false
}
If (Test-Connection -ComputerName $computerName -Count 1 -Quiet) {
$props.Alive = $true
}
【问题讨论】:
-
here 的简单代码示例怎么样。你必须尝试一些连接来测试端口是否打开。
-
感谢您的建议,马特!我添加了该代码(经过调整以适合我所拥有的),但它返回每台计算机都关闭了端口,我知道这不是真的。我是 telnet 和 powershell 的相对新手,但我在这里确信我需要使用 telnet 才能真正做出我需要的决定。
-
telnet命令的作用与@Matt 建议的代码完全相同。 -
要验证端口是否真的在目标机器上打开,在其上运行
netstat -an | findstr LISTENING | findstr ":80"。这里 80 是您要查找的端口,因此请将其更改为所需的端口。如果该命令列出了您的端口,那么问题将出在防火墙上,很可能是目标框上的 Windows 防火墙。 -
Good ol' 用户错误。在我弄清楚我做错了什么(变量定义)后,我得到了@Matt 建议工作的代码。谢谢你们的帮助,伙计们!
标签: powershell tcp port telnet