gpt4 book ai didi

powershell - 如何在 Powershell 中自动检查 Telnet 端口?`

转载 作者:可可西里 更新时间:2023-11-01 02:35:06 28 4
gpt4 key购买 nike

我目前正在尝试编写一个脚本来查询 AD 以获取计算机列表,对计算机执行 ping 操作以确定哪些计算机仍处于事件状态,然后远程登录到所有可 ping 操作计算机上的特定端口。我正在寻找的输出是 AD 中可 ping 的计算机的完整列表,我无法远程登录到所述端口。

我读过 these few questions ,但他们并没有完全理解我正在尝试做的事情。我只是想在不输入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
}

最佳答案

将此代码改编成您自己的代码是最简单的方法。此代码示例来自 PowerShellAdmin wiki .收集要检查的计算机和端口。然后尝试使用 Net.Sockets.TcpClient 在每个端口上连接到该计算机。

foreach ($Computer in $ComputerName) {

foreach ($Port in $Ports) {

# Create a Net.Sockets.TcpClient object to use for
# checking for open TCP ports.
$Socket = New-Object Net.Sockets.TcpClient

# Suppress error messages
$ErrorActionPreference = 'SilentlyContinue'

# Try to connect
$Socket.Connect($Computer, $Port)

# Make error messages visible again
$ErrorActionPreference = 'Continue'

# Determine if we are connected.
if ($Socket.Connected) {
"${Computer}: Port $Port is open"
$Socket.Close()
}
else {
"${Computer}: Port $Port is closed or filtered"
}
# Apparently resetting the variable between iterations is necessary.
$Socket = $null
}
}

关于powershell - 如何在 Powershell 中自动检查 Telnet 端口?`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26261279/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com