Board logo

标题: [网络连接] [已解决]安装telnet的批处理在Windows7报错,如何修改不能让它报错呢? [打印本页]

作者: ckjshi    时间: 2022-1-6 07:54     标题: [已解决]安装telnet的批处理在Windows7报错,如何修改不能让它报错呢?

本帖最后由 ckjshi 于 2022-1-7 11:30 编辑

修改原因:在Windows7报错,在Windows10运行一切正常。
我想让此脚本在Windows7、Windows10、Windows11都可以正常运行,能否实现?
提前感谢大家,给我提供帮助。
在Windows7报错这样的错误
  1. 方法调用失败,因为 [System.Net.Sockets.TcpClient] 不包含名为“Dispose”的方法。
  2. 所在位置 行:41 字符: 27
  3. +         $tcpClient.Dispose <<<< ()
  4.     + CategoryInfo          : InvalidOperation: (Dispose:String) [], RuntimeEx
  5.    ception
  6.     + FullyQualifiedErrorId : MethodNotFound
复制代码
以下是脚本源代码
  1. www.sohu.com NULL
  2. 192.168.1.111 3389
  3. 192.168.41.233 NULL
  4. www.12306.cn 443
复制代码
  1. <#*,:&cls
  2. @echo off
  3. netsh advfirewall set allprofiles state off
  4. if exist %windir%\system32\telnet.exe (echo (Telnet)已安装,现在开始测试,请耐心等待(测试结果)后,拍照或截图发送给我们。) else (dism /Online /Enable-Feature /FeatureName:TelnetClient)
  5. cd /d "%~dp0"
  6. powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
  7. pause
  8. exit /b
  9. #>
  10. # IP_List
  11. echo " "
  12. echo " "
  13. $ipListFile = ".\IP_list.txt"
  14. # Record output
  15. $outfile = ".\Record.txt"
  16. # output format
  17. $format = "{0} - {1} - {2}"
  18. $ping = New-Object System.Net.NetworkInformation.Ping
  19. Get-Content -Path $ipListFile | ForEach-Object {
  20.   $_ | Write-Host
  21.   $arrIPPort = $_ -split '\s+'
  22.   if ($arrIPPort.Count -gt 1) {
  23.     $ip = $arrIPPort[0]
  24.     $port = $arrIPPort[1]
  25.     $pingReply = $ping.Send($ip)
  26.     if ($pingReply.Status -eq 'Success') {
  27.       $pingResult = 'ping通'
  28.     } else {
  29.       $pingResult = 'ping不通'
  30.     }
  31.     try {
  32.       $tcpClient = New-Object System.Net.Sockets.TcpClient -ArgumentList @($ip, $port)
  33.       $tcpResult = "${port}端口通"
  34.     } catch {
  35.       $tcpResult = "${port}端口不通"
  36.     } finally {
  37.       if ($tcpClient) {
  38.         $tcpClient.Dispose()
  39.       }
  40.     }
  41.     $format -f $ip, $pingResult, $tcpResult
  42.   }
  43. } | Set-Content -Path $outfile
  44. $ping.Dispose()
  45. echo " "
  46. echo " "
  47. echo "--------------------测试结果--------------------"
  48. echo " "
  49. type ".\Record.txt"
复制代码

作者: flashercs    时间: 2022-1-6 11:52

  1. <#*,:&cls
  2. @echo off
  3. netsh advfirewall set allprofiles state off
  4. if exist %windir%\system32\telnet.exe (echo (Telnet)已安装,现在开始测试,请耐心等待(测试结果)后,拍照或截图发送给我们。) else (dism /Online /Enable-Feature /FeatureName:TelnetClient)
  5. cd /d "%~dp0"
  6. powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
  7. pause
  8. exit /b
  9. #>
  10. # IP_List
  11. echo " "
  12. echo " "
  13. $ipListFile = ".\IP_list.txt"
  14. # Record output
  15. $outfile = ".\Record.txt"
  16. # output format
  17. $format = "{0} - {1} - {2}"
  18. $ping = New-Object System.Net.NetworkInformation.Ping
  19. Get-Content -Path $ipListFile | ForEach-Object {
  20.   $_ | Write-Host
  21.   $arrIPPort = $_ -split '\s+'
  22.   if ($arrIPPort.Count -gt 1) {
  23.     $ip = $arrIPPort[0]
  24.     $port = $arrIPPort[1]
  25.     $pingReply = $ping.Send($ip)
  26.     if ($pingReply.Status -eq 'Success') {
  27.       $pingResult = 'ping通'
  28.     } else {
  29.       $pingResult = 'ping不通'
  30.     }
  31.     try {
  32.       $tcpClient = New-Object System.Net.Sockets.TcpClient -ArgumentList @($ip, $port)
  33.       $tcpResult = "${port}端口通"
  34.     } catch {
  35.       $tcpResult = "${port}端口不通"
  36.     } finally {
  37.       if ($tcpClient) {
  38.         # $tcpClient.Dispose()
  39.       }
  40.     }
  41.     $format -f $ip, $pingResult, $tcpResult
  42.   }
  43. } | Set-Content -Path $outfile
  44. # $ping.Dispose()
  45. echo " "
  46. echo " "
  47. echo "--------------------测试结果--------------------"
  48. echo " "
  49. type ".\Record.txt"
复制代码

作者: flashercs    时间: 2022-1-6 11:54

还有这脚本根本用不到telnet啊,还检测telnet干嘛?
作者: ckjshi    时间: 2022-1-6 15:21

回复 3# flashercs


万分感谢。
作者: ckjshi    时间: 2022-1-6 15:25

回复 3# flashercs


    哦!是吗!不明觉厉。谢谢你
能解释一下,不安装TELNET如何实现的端口测试吗?按照我的想法是安装TELNET才能实现测试端口号的。
作者: flashercs    时间: 2022-1-6 23:37

回复 5# ckjshi


    telnet是什么,可以百度百科看看.它是用来登陆服务器并执行命令的;测试端口只是副作用.它的底层原理也是tcp socket,跟浏览网页一样.那我们可以直接用tcp socket来检测端口不就行了,没必要用telnet.
作者: ckjshi    时间: 2022-1-7 08:19

回复 6# flashercs


    谢谢你




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2