Using Test-NetConnection in a script to test availability and connectivity
If you look at all of the output in the preceding examples, it is human readable. However if you are writing a script and only want to test whether a remote host is up and can listening on a particular port before proceeding with the script, you don’t require all of the additional information. In this case, you can use the -InformationDetail parameter with the value Quiet to simply return $true or $false:
PS C:\Users\aaron> Test-NetConnection -ComputerName thinkpowershell.com -Port 443 -InformationLevel Quiet True
This can then be put directly into a conditional test such as an If statement:
PS C:\Users\aaron> If (Test-NetConnection -ComputerName thinkpowershell.com -Port 443 -InformationLevel Quiet) { Write-Host "thinkpowershell.com is listening on port 443." } thinkpowershell.com is listening on port 443.
Starting a listener
After running the command below in a PowerShell prompt from within the directory in which you saved the script, the New-Portlistener PowerShell function is available in your session (Alternatively, you could run it from PowerShell ISE)
. .\New-Portlistener
Now that the function is available, you can start a TCP listener on port 9001, for example by running this command:
New-Portlistener -UDPPort 9001
After running, you will see this output on your screen:
You can press Escape to stop the listener, and it should show this as the output:
Stopped listening on UDP port 9001
If you are trying to start a listener which is already active, it will show an error (In this example, I used TCP port 3389 which is the default RDP port)
WARNING: TCP Port 3389 is already listening, aborting...
Note: Windows Firewall could give pop-ups when starting the listener
Troubleshoot Network connectivity issues via PowerShell
You can use the Test-NetConnection cmdlet to find out diagnostic information for a connection. It includes support for the Ping test, TCP test, route tracing, and also route selection diagnostics.
Depending on which options are used, the output will consist of information such as ComputerName, RemoteAddress, SelectedSourceAddress, OutgoingInterfaceIndex, SelectedNetRoute, and more.
Here is the list of supported parameters
- CommonTCPPort: Specifies the typical service TCP port number
- ComputerName: Specifies the Domain Name System (DNS) name or IP address of the target computer.
- ConstrainInterface: Specifies the interface constraint to use for route diagnostics.
- ConstrainSourceAddress: Specifies the source address constraint to use for route diagnostics.
- DiagnoseRouting: Indicates that route diagnostics run to output the route and source address selection information for the remote host.
- Hops: Specifies the number of hops to traverse in a traceroute command.
- InformationLevel: Specifies the information level Detailed or Quiet
- Port: Specifies the TCP port number on the remote computer.
- TraceRoute: Indicates that Tracert runs to test connectivity to the remote host.
Using the powerful Test-NetConnection cmdlet
Test-NetConnection -ComputerName "www.contoso.com" -ConstrainInterface 5 -DiagnoseRouting -InformationLevel "Detailed" ComputerName : www.contoso.com RemoteAddress : 2600:1409:a:185::2768 ConstrainInterfaceIndex : 5 SelectedSourceAddress : 2001:4898:e0:79:75dd:64cf:d9ff:f86 OutgoingInterfaceIndex : 5 SelectedNetRoute : DestinationPrefix: ::/0 NextHop: fe80::200:5eff:fe00:202 RouteSelectionEvents : IP: Route [DestinationPrefix: ::/0 NextHop: fe80::200:5eff:fe00:202 InterfaceIndex: 4 RouteMetric: 256] is blocked for Destination: 2600:1409:a:185::2768 ConstrainInterfaceIndex: 5 ConstrainScopeZone: 1 in Compartment: 1, Reason: InterfaceConstraint. SourceAddressSelectionEvents : IP: Source address 2001:4898:e0:79:75dd:64cf:d9ff:f86 is preferred over fe80::75dd:64cf:d9ff:f86 for destination 2600:1409:a:185::2768 Rule = 2.0. IP: Source address 2001:4898:e0:79:75dd:64cf:d9ff:f86 is preferred over fe80::75dd:64cf:d9ff:f86 for destination 2600:1409:a:185::2768 Rule = 2.0. RouteDiagnosticsSucceeded : True
List of Sample Commands
Here are a few sample commands you can try on your computer. Some of these commands will need admin privileges, so make sure to launch PowerShell 7 or PowerShell 5.1 with the required permission.
Test-NetConnection youtube.com
More detailed information on the connectivity:
Test-NetConnection youtube.com -InformationLevel "Detailed"
When working with web services, it is to test a specific TCP port.
Test-NetConnection youtube.com -Port 443 -InformationLevel "Detailed"
Perform route diagnostics to connect to a remote host.
Test-NetConnection -ComputerName itopstalk.com -DiagnoseRouting -InformationLevel Detailed
Find the default port of a website
Test-NetConnection -ComputerName microsoft.com -CommonTCPPort HTTP
Run Trace Route for a website
Test-NetConnection -ComputerName google.com -TraceRoute
That said, it is beneficial if you are on a non-windows platform but uses the same command as in Windows.
Apart from this, I have also noticed executing commands for some websites like Microsoft.com. It doesn’t work. Ping fails all the time, which could be a server thing blocking such random requests.
TCP и UDP
TCP и UDP это протоколы транспортного уровня. Самое главное что вам нужно о них знать: любой из них может использоваться для передачи информации.
Кстати, про протокол TCP вы практически наверняка слышали, по крайней мере должны были встречать запись TCP/IP — эта связка протоколов очень важна для Интернета. Протокол IP отвечает за то, куда отправлять данные, а TCP отвечает за непосредственную передачу данных и проверку их целостности.
Работу протокола TCP можно представить как создание соединения между двумя компьютерами, по этому соединению передаются данные. Внутри этого соединения данные проверяются на предмет повреждения — если какая-то часть повреждена, то она отправляется повторно.
Протокол UDP тоже передаёт данные, но вместо того, чтобы создавать устойчивое соединение, внутри которого данные проверяются на целостность, он просто «пуляет» свой пакет на определённый адрес. В принципе, это и есть главное отличие между этими протоколами.
Step 3: Ensure That Your TCP Port Is Open
Our final test is to ensure that the TCP port we’re expecting the web server to be running on is open. In this case, since we’re just specifying google.com, I’m going to assume it is TCP port 80. To do that, we’ll simply add another parameter to Test-NetConnection. Because Test-NetConnection understands the standard TCP port for a few different services, we don’t even need to know the port number. I can just pass HTTP to the CommonTCPPort parameter and it will do the work for me.
Test-NetConnection -ComputerName google.com -CommonTCPPort HTTP
However, if the website might be running under a different port, such as 8080, you can specify a TCP port directly by using the Port parameter instead.
Test-NetConnection -ComputerName google.com -Port 80
We’ve now tested each of the connectivity requirements outlined at the start of this article. If we still can’t render the website at this time, we’ve confirmed the problem does not lie with our client, and we can pass the problem on to Google or perhaps a downstream DNS server. Don’t stop here; read our eBook, «How to Automate Using PowerShell,» for other PowerShell tricks.
Как заставить работать командлеты PowerShell 4, такие как Test-NetConnection, в Windows 7?
Ситуация. На компьютере с Windows 7 SP1 я обновил Windows6.1-KB2819745-x64-MultiPkg.msu. Кроме того, в PowerShell $ PSVersionTable теперь сообщает «PSVersion 4.0».
В настоящее время я пришел к выводу, что многие командлеты PowerShell 4, такие как Test-NetConnection, будут работать только в Windows 8.1. Однако мне было интересно, есть ли обходной путь, с помощью которого я мог бы импортировать модули PowerShell 4 на свой компьютер с Windows 7.
7 ответов
Ты не можешь. Они полагаются на основные функции новой ОС (8.0 или 8.1) и не могут быть перенесены обратно в Windows 7. Альтернативой является написание собственных функций / модулей для репликации новых командлетов с использованием методов .NET framework.
Могу только предположить, что вы установили не тот пакет. Убедитесь, что вы загрузили правильный пакет со страницы здесь.
Ниже вы увидите, как запускается Windows 7 Service Pack 1 с PowerShell 4 с использованием Test-Connection и Get-FileHash:
Хотя PowerShell 4.0 доступен в Windows 7, как утверждает Накл-Драггер, некоторые функции полагаются на новые функции операционной системы. К сожалению, Test-NetConnection недоступен в Windows 7, как указано в документации . >.
Test- Connection , который присутствует, в основном это ping. Test- NetConnection предлагает гораздо больше функций, позволяя выбирать такие вещи, как TCP-порты, протоколы, трассировка маршрутов и уровни информации.
Сценарий Send-Ping доступен в ScriptCenter в галерее TechNet, но я думаю, что он действительно полезен только в том случае, если вы по какой-то причине застряли на PowerShell 3.0.
Я вижу несколько ответов, подтверждающих переносимость, и мое тестирование подтверждает их утверждения:
Импортируйте все необходимые модули либо из файла, либо через сеанс PSSession на хост, на котором есть необходимые модули. Архитектура консоли PowerShell (x86 или x64), которую вы запускаете, будет определять, какую архитектуру модуля вы импортируете.
- все еще не могу сделать эту работу И
- нужен надежный тест TCP, но может не понадобиться все остальное, предоставляемое Test-NetConnection И
- Нужно, чтобы все это работало даже на PowerShell v2.0
Вы можете попробовать это.
Естественно, должна быть возможность создать цикл, который проверяет несколько соединений и выводит результаты, выбирая свойства $ TCPClient. Мое первоначальное тестирование показывает, что вам нужно выбрать эти свойства.
Адрес, который вы проверили
Порт, который вы тестировали
Насколько мне известно, в Windows Server 2008 R2 / Windows 7 просто нет счетчиков, которые используются методами .NET для реализации get-netstuff.
В новой версии PowerShell может быть реализовано сравнение хэшей и т. Д., Поскольку это ни с чем не связано, это просто кусок кода. Но если вы хотите использовать, например, Get-NetTCPConnection, показывать нечего.
Добавление в Ответ Антона Круглова. Модули PowerShell кроссплатформенные. Таким образом, модуль, скопированный из Windows Server 2012 R2 x64, можно импортировать в Windows 7 x86, и даже если вы работаете как стандартный пользователь без прав на копирование их в C:\Windows\System32\WindowsPowerShell\v1.0\Modules , вы можете скопировать его в любую локальную папку и запустить.
Предположим, вы скопировали модули NetTCPIP , DnsClient и NetSecurity с компьютера под управлением Windows Server 2012 или более поздней версии и сохранили их в папку, которую можно импортировать с помощью
По крайней мере, Test-NetConnection можно перенести обратно в Windows 7. Просто скопируйте папки NetTCPIP, DnsClient и NetSecurity с поддерживаемого компьютера Windows с той же версией PowerShell (Windows 8.1, Windows 10 и т. Д.). Папка — C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Modules. Тогда Import-Module -Name C:\Windows\System32\WindowsPowerShell\v1.0\Modules\NetTCPIP -Verbose
Кроме того, вы можете импортировать модуль с удаленного компьютера (скажем, win2012 ):
У меня была такая же проблема на моей Windows 7 x64, и оба решения работали для меня, начиная с PowerShell 5.1.
Сканер портов на PowerShell
Существует множество отличных сканеров портов: Nmap, Masscan, Angry IP Scanner, ZMap и т.д. Все они обладают богатым функционалом, и это с одной стороны плюс, но с другой — минус. В некоторых ситуациях, не требуется богатый функционал.
Написание сканера портов может потребоваться, например, когда мы выполняем пентест в строго ограниченной среде, где мы не можем использовать какие-либо стандартные инструменты пентеста. Например, при тестировании изолированной среды VDI / Citrix, в которую мы не можем ничего загружать. В таких случаях лучше создать свой инструмент.
Сканер портов TCP и UDP в PowerShell
Для таких случаев я разработал следующий быстрый и простой, но мощный и надежный сканер портов.
Чтобы сохранить небольшой размер, я разделил сканер на два отдельных независимых модуля:
- Сканер TCP-портов
- Сканер портов UDP
Так что это два сканера портов, а не один. Оба сканера можно найти в репозитории GitHub:
Список возможностей сканера портов PowerShell
Оба сканера имеют следующие особенности:
- Обнаружение открытых, закрытых и фильтруемых портов (как TCP, так и UDP).
- Возможность сканирования отдельного хоста, диапазона сети или списка хостов в файле из файла.
- Настраиваемые значения тайм-аута для эффективного и надежного сканирования портов.
- Не обнаруживается никаким антивирусом и EDR
С точки зрения дизайна:
- Маленький размер.
- Написан на чистом PowerShell (дополнительных модулей не требуется).
- Возобновление сканирования.
- Умеет пропускать просканированные хосты / порты.
Давайте посмотрим, как пользоваться этими сканерами.
Типичный сценарий использования
Поскольку сканеры портов написаны на PowerShell, мы должны иметь возможность запускать команды PowerShell в системе.
Сканер TCP-портов:
1 |
Import-Module.\port-scan-tcp.ps1 port-scan-tcp<host(s)><port(s)> |
Сканер портов UDP:
1 |
Import-Module.\port-scan-udp.ps1 port-scan-udp<host(s)><port(s)> |
Давайте посмотрим на несколько примеров использования на практике.
Сканирование портов отдельного хоста
Поиск открытых портов на удаленном хосте порт tcp / 445:
1 | port-scan-tcp192.168.204.183445 |
Сканирования одного хоста на предмет выбранных TCP-портов:
1 | port-scan-tcp192.168.204.183(21,22,23,25,80,443,445,3389) |
Сканирование портов сетевого диапазона
Сканирования портов в диапазоне 192.168.204.0/24 для порта tcp / 445:
1 | 0..255|foreach{port-scan-tcp192.168.204.$_445} |
Сканирования диапазона 192.168.204.0/24 для выбранных TCP-портов:
1 | 0..255|foreach{port-scan-tcp192.168.204.$_(22,80,445)} |
Список хостов в файле
Есть также возможность сканирования хостов из файла.
Например, в корпоративных сетях с развертыванием Active Directory (AD) мы могли бы извлечь список компьютеров из AD с помощью командлетов PowerShell:
1 |
$a=adsisearcher”(objectCategory=computer)” $a.PropertiesToLoad.add(“dnshostname”)|out-null $a.PageSize=1 $a.FindAll()|%{echo$_.properties.dnshostname}>computers.txt |
Теперь мы можем идентифицировать все живые хосты Windows с помощью сканирования порта tcp / 445:
1 | port-scan-tcp(gc.\computers.txt)445 |
Получение результатов
Оба сканера сохраняют отчет в файл scanresults.txt, который создается в рабочем каталоге. Это позволяет проверять результаты в любое время, даже во время текущего сканирования.
Например, вот как мы можем получить список хостов с открытым портом tcp / 445:
1 | Get-Content.\scanresults.txt|Select-String»tcp,445,Open» |
Если бы мы хотели перечислить только первый столбец, мы могли бы легко сделать это с помощью PowerShell следующим образом:
1 | (Get-Content.\scanresults.txt|Select-String»tcp,445,Open»)-replace»,.*»,»» |
Теперь можно открыть список в программе для брутфорса SMB, и попытаться взломать найденные хосты Windows.
Требования и ограничения
Совместимость. Сканер TCP поставляется в двух версиях, но с той разницей, что используется метод TcpClient.ConnectAsync (). Этот метод, доступный в .NET 4.5, дает сканеру возможность различать «закрытые» и «отфильтрованные» порты. Совместимая версия сканера (для более старых систем) не может распознать это и просто сообщает обо всех таких случаях как «Закрыто».
Скорость. Оба сканера портов (TCP и UDP) не поддерживают многопоточность. Таким образом, скорость сканирования ограничена. Минимальная скорость — 1 сканирование порта в секунду, в зависимости от значений тайм-аута, которые также можно изменить.
Снижение скорости. Следует иметь в виду, что сканеры могут немного замедлиться через некоторое время, из-за большого количества результатов.
1 |
Import-Module.\port-scan-tcp.ps1-force Import-Module.\port-scan-udp.ps1-force |
На какие открытые порты нужно обращать внимание
Я упоминал, что если на компьютер попала вредоносная программа, которая открыла соединение для связи со злоумышленником, то она будет прослушивать один из портов. В этом случае для TCP состояние подключения будет LISTENING. Протокол UDP является «безстатусным», поэтому для него ничего не пишется, но нужно знать, что через UDP точно также может происходить обмен информацией.
Нужно проверить, какие именно файлы и службы открыли соединение
Если исполнимый файл, открывший сетевого соединение, размещён в сомнительном месте, в папках, куда обычно не устанавливают программы, то нужно особое внимание обратить на этот файл.. Трояны и бэкдоры могут действовать двумя методами:. Трояны и бэкдоры могут действовать двумя методами:
Трояны и бэкдоры могут действовать двумя методами:
- открывать порт и ждать подключения злоумышленника;
- самостоятельно подключаться к удалённой системе злоумышленника.
При втором варианте состояние подключения НЕ будет LISTENING — вредоносную программу можно найти только путём полного анализа всех соединений.
Как правило, службы, которые прослушивают только IP адрес 127.0.0.1, то есть слушающие на петлевых интерфейсах, предназначены для обслуживания каких-либо легитимных программ, запущенных на вашей системе.
Step 1: Confirm Your Connection with Test-NetConnection
To begin troubleshooting, you’ll first need to confirm that you have an internet connection. You can do this by simply running PowerShell Test-NetConnection with no parameters at all. However, if you’d like to get more information, I suggest using the InformationLevel parameter with the Detailed argument.
Test-NetConnection -InformationLevel Detailed
This simple command checks your local connectivity and internet connectivity and confirms that your DNS client can resolve names directed at your DNS server all in one shot. Consider it a general health check for your network connection. This command checks three of the five processes needed to render a website in one fell swoop!
Get-CimInstance
WMI, or CIM (pronounced “See Eye Em”) as the PowerShell cmdlets morphed to in version 3.0, is a great yet simple and generic method to get information about all kinds of things from one or more computers.
For instance, you can get detailed information about processes, services, disks, networks, memory, processors, batteries, etc, etc. In addition, some companies, such as Citrix, add their own WMI providers to give access to information that would otherwise need a proprietary API or executable to retrieve.
For example, this command will get operating system details and installation and last boot times (fig. 1):
Get-CimInstance -ClassName win32_operatingsystem -ComputerName grl-dc03,grl-sql01,grl-sql03 | select PSComputerName,caption,version,installdate,LastBootUpTime | Format-Table -AutoSize
Fig. 1: The Get-CimInstance Command delivers as output information about operating systems, which are displayed in table form
A lot of my consultancy engagements include health checking of various components. The way I gather a large amount of information about the desktops and servers I am checking, which I can use when I am not on site or have access to the customer systems, is to use a script I wrote that queries almost fifty CIM classes from a list of computers specified on the command line, or via text file. You can download the script for free from my GitHub repository.
The script writes the results to csv files making it easy to compare results from different machines, e.g. to check consistency and help spot anomalies.
Test-NetConnection: проверка открытых/закрытых TCP портов из PowerShell
08.06.2022itproPowerShellкомментариев 5
В PowerShell 4.0 (Windows 2012 R2, Windows 8.1 и выше) появился встроенный командлет для проверки сетевых соединений — Test-NetConnection. С помощью данного командлета вы можете проверить доступность удаленного сервера или сетевой службы на нем, блокировку TCP портов файерволами, проверить доступность по ICMP и маршрутизацию. По сути, командлет Test-NetConnection позволяет заменить сразу несколько привычных сетевых утилит: ping, traceroute, сканер TCP портов и т.д.
Основное преимущество командлета Test-NetConnection – он уже входит в состав всех современных версий Windows и вам не нужно устанавливать его отдельно. Командлет входит в состав модуля NetTCPIP (начиная с PoSh v4.0).
Значение 4 в столбце Major говорит о том, что на компьютере установлен PowerShell 4.0.
Проверим, открыт ли порт TCP 25 (SMTP протокол) на почтовом сервере с помощью Test-NetConnection:
Test-NetConnection -ComputerName msk-msg01 -Port 25
В сокращенном виде аналогичная команда выглядит так:
TNC msk-mail1 -Port 25
Разберем результат команды:
Как вы видите, командлет выполняет разрешение имени сервера в IP адрес, выполняется проверка ответа ICMP (аналог ping) и доступность TCP порта. Указанный сервер доступен по ICMP ( PingSucceeded = True ) и 25 TCP порт также отвечает ( RemotePort=25, TcpTestSucceeded= True ).
У командлета есть специальный параметр –CommonTCPPort, позволяющий указать наименование известного сетевого протокола (HTTP, RDP, SMB, WINRM).
Например, чтобы проверить доступность веб-сервера, можно использовать команду:
Test-NetConnection -ComputerName winitpro.ru -CommonTCPPort HTTP
Test-NetConnection msk-rds1 –CommonTCPPort RDP
Можно вывести все параметры, которые возвращает командлет Test-NetConnection:
Test-NetConnection msk-man01 -port 445|Format-List *
Если нужна только информация по доступности TCP порта, в более лаконичном виде проверка может быть выполнена так:
TNC msk-mail1 -Port 25 -InformationLevel Quiet
Командлет вернул True, значит удаленный порт доступен.
(New-Object System.Net.Sockets.TcpClient).Connect(‘msk-msg01’, 25)
В Windows 10/ Windows Server 2016 вы можете использовать командлет Test-NetConnection для трассировки маршрута до удаленного сервера при помощи параметра –TraceRoute (аналог tracert). С помощью параметра –Hops можно ограничить максимальное количество хопов при проверке.
Test-NetConnection msk-man01 –TraceRoute
Командлет вернул сетевую задержку при доступе к серверу в милисекундах ( PingReplyDetails (RTT) : 41 ms ) и все IP адреса маршрутизаторов на пути до целевого сервера.
Test-NetConnection в скриптах мониторинга
Следующая команда позволить проверить доступность определенного порта на множестве серверов, список которых хранится в текстовом файле servers.txt. Нас интересуют сервера, где искомая служба не отвечает:
Аналогичным образом вы можете создать простейшую систему мониторинга, которая проверяет доступность серверов и выводит уведомление, если один из серверов недоступен.
Например, вы можете проверить доступность основных служб на всех контроллеров домена (список DC можно получить командлетом Get-ADDomainController). Проверим следующие службы на DC (в утилите PortQry есть аналогичное правило Domain and trusts):
- RPC – TCP/135
- LDAP – TCP/389
- LDAP – TCP/3268
- DNS – TCP/53
$Ports = «135»,»389″,»636″,»3268″,»53″,»88″,»445″,»3269″, «80», «443»$AllDCs = Get-ADDomainController -Filter * | Select-Object Hostname,Ipv4address,isGlobalCatalog,Site,Forest,OperatingSystemForEach($DC in $AllDCs)Foreach ($P in $Ports)$check=Test-NetConnection $DC -Port $P -WarningAction SilentlyContinueIf ($check.tcpTestSucceeded -eq $true)else>
Скрипт проверит указанные TCP порты на контроллерах домена, и, если один из портов недоступен, выделит его красным цветом (с небольшими доработками можно запустить данный PowerShell скрипт как службу Windows).
Сканер сети на PowerShell
Также вы можете реализовать простой сканер портов и IP подсетей для сканирования удаленных серверов или подсетей на открытые/закрытые TCP порты.
Test-NetConnection в скриптах мониторинга PowerShell
Следующая команда позволяет вам проверить доступность определённого порта на нескольких серверах, список которых хранится в текстовом файле list_servers.txt (расположен в папке c:\PS\). Нам нужны серверы, на которые не отвечает указанный сервис:
Get-Content c:\PS\list_servers.txt | where { -NOT (Test-Netconnection $_ -Port 25 -InformationLevel Quiet)}| Format-Table -AutoSize
Точно так же вы можете создать простой скрипт мониторинга, который проверяет доступность серверов и отображает уведомление, если один из серверов недоступен.
Например, вы можете проверить доступность базовых служб на всех контроллерах домена (список контроллеров домена можно получить с помощью командлета Get-ADDomainController). Давайте проверим следующие службы на DC (инструмент PortQry имеет аналогичное правило «Domain and trusts»):
- RPC – TCP/135
- LDAP – TCP/389
- LDAP – TCP/3268
- DNS – TCP/53
- Kerberos – TCP/88
- SMB – TCP/445
Скрипт проверит указанные TCP-порты на контроллерах домена, и, если один из портов недоступен, он выделит его красным цветом (вы можете запустить этот скрипт PowerShell как службу Windows).
$Ports = "135","389","636","3268","53","88","445","3269", "80", "443" $AllDCs = Get-ADDomainController -Filter * | Select-Object Hostname,Ipv4address,isGlobalCatalog,Site,Forest,OperatingSystem ForEach($DC in $AllDCs) { Foreach ($P in $Ports){ $check=Test-NetConnection $DC -Port $P -WarningAction SilentlyContinue If ($check.tcpTestSucceeded -eq $true) {Write-Host $DC.name $P -ForegroundColor Green -Separator " => "} else {Write-Host $DC.name $P -Separator " => " -ForegroundColor Red} } }
А это чуть модифицированная версия скрипта, в которой список серверов считывается из файла C:\Users\MiAl\Documents\list_servers.txt, а также выводятся имена хостов, чтобы было понятно, чьи именно порты проверяются:
$Ports = "135","389","636","3268","53","88","445","3269", "80", "443" $AllHosts = Get-Content C:\Users\MiAl\Documents\list_servers.txt ForEach($Hosts in $AllHosts) { $Hosts Foreach ($P in $Ports){ $check=Test-NetConnection $Hosts -Port $P -WarningAction SilentlyContinue If ($check.tcpTestSucceeded -eq $true) {Write-Host $Hosts.name $P -ForegroundColor Green -Separator " => "} else {Write-Host $Hosts.name $P -Separator " => " -ForegroundColor Red} } }
Код скрипта сохранён в файл port_checker.ps1, пример запуска:
C:\Users\MiAl\Documents\port_checker.ps1
Как открыть порт в windows 7 и windows 8
Как попасть в настройки брандмауэра windows
Настройка встроенного брандмауэра находится в «Панели управления», раздел «Система и безопасность». В windows 8 и 8.1 можно воспользоваться элементом рабочего стола — Поиск. Нужно начать вводить слово «Брандмауэр» и система выдаст ссылку в результатах.
Ещё один быстрый и удобный способ быстро попасть в настройки Брандмауэра — нажать комбинацию клавиш Win+R:
В строке открыть пишем firewall.cpl, нажимаем кнопку ОК.
Как открыть порт в брандмауэре windows.
Вам откроется раздел настройки Брандмауэра в режиме повышенной безопасности. В поле слева кликаем на раздел «Правила для входящих соединений»:
Откроется список всех правил для входящих соединений. Теперь надо создать правило. Для этого справа, в окне «Действия», кликаем на ссылку «Создать правило». Откроется Мастер создания правила для нового входящего подключения:
Выбираем тип правила — «Для порта». Нажимаем кнопку Далее.
Теперь нужно выбрать тип протокола и указать порт. «Тип протокола» для игр, как правило, «Протокол TCP». В некоторых случаях, например для файлообменных программ или игр, нужно ещё открыть и порт UDP. Поэтому, если нужно открыть и TCP-порт и UDP-порт в windows — Вам придется создавать два правила. В поле Определенные порты нужно указать номер нужного порта. Например, для Minecraft нужно открывать порт 25565 и TCP и UDP. Нажимаем кнопку Далее.
Ставим галку «Разрешить подключение». Нажимаем кнопку Далее.
Здесь ничего не меняем. Нажимаем кнопку Далее.
В поле Имя прописываем название для создаваемого правила — например DC++ или Minecraft. Нажимаем кнопку Готово.
Правило создано и порт в брандмауэре windows 7 и windows 8 открыт. Проверить доступность порта из-вне можно с помощью программы PFPortChecker.
Если при проверке — порт закрыт, то можно попробовать такой вариант: разрешить приложению любую сетевую активность. Для этого, опять в настройках создаем правило:
Только теперь не для порта — а «Для программы». Нажимаем кнопку Далее.
Выбираем пункт «Путь программы» и нажимаем кнопку Обзор. В открывшемся окне нужно выбрать программы, к которой нужен доступ из внешней сети — например, UTorrent, DC++ или Minecraft. Нажимаем кнопку Далее.
Ставим галочку «Разрешить подключение». Нажимаем кнопку Далее.
В этом окне ничего не меняя, нажимаем кнопку Далее.
В поле имя вводим название правила — например, dc++, utorrnet или minecraft и нажимаем кнопку Готово.
Правило для программы создано. Если и это не помогло — можно попробовать для чистоты эксперимента вообще отключить встроенных в систему фаервол.
Как отключить Брандмауэр windows 7, windows 8 и windows 8.1
Для того, чтобы отключить встроенный в систему фаервол нужно в настройках Брандмауэра выбрать пункт «Включение и отключение брандмауэра windows»:
Вам откроется вот такое окно «Настройки параметров для каждого типа сети»:
Для всех типов сетей ставим галку «Отключить брандмауэр windows». Нажимаем кнопку ОК. После этого брандмауэр станет неактивен и Ваша операционная система будет полностью открыта угрозам из внешней сети. Поэтому я рекомендую отключать брандмауэр либо только кратковременно, для диагностики проблем с доступностью порта из-вне, либо если Вы переходите на другой, сторонний пакетный фильтр (фаервол). Постоянная работа в сети Интернет с отключенным брандмауэром (фаерволом) крайне нежелательна.
Working with the Test-NetConnection command in PowerShell
PowerShell commands are the same as CMD commands, but with a different functionality that you will see below.
Recommended Article: How to Buy Windows VPS For Work Binance
Test-NetConnection command
The Test-NetConnection command is a combination of several frequently used network commands in CMD and has several parameters. The general structure of this command is the same as other PowerShell commands, and you can enter the desired parameter or values after entering the command.
See the following examples to learn more about this command.
Example for the Test-NetConnection command
You can use the following command to ping an IP address in PowerShell.
Following command is used to ping based on a computer name or a domain.
The PowerShell structure feature will allow you to enter a range of IPs so that PowerShell can ping them all.
In the above command, the value of 1..99 is the last number of the IP address and x.x.x is the network address where you can enter your desired values. PowerShell will ping all IP addresses in the range 192.168.1.1 to 192.168.1.99, respectively.
This feature is the simplest feature of the Test-NetConnection command. In the following, we will explain the other parameters of this command.
TraceRoute parameter
One of the widely used command in the Tracert network is PowerShell, which has become a parameter for the Test-NetConnection command. To use tracert, you can proceed as follows. The following command will work exactly the same as the Tracert command.
State parameter
Another command that exists in CMD and is used as a parameter in PowerShell is the Netstat command, which is executed in PowerShell via state and restores all established connections
Port parameter
You will be able to use this parameter to check a specific port on a computer.
This command will check the status of port 80 on the Google.com server and finally provide information about the port in question.
By this command, you will also be able to use the CommonTCPPort parameter to scan all ports on a particular service.
For example, in the following command, we want the HTTP port to search for the 192.168.1.10 server.
After entering the above command, PowerShell starts scanning all the ports of the mentioned system. Whenever it can find the port on which the HTTP service is located, it will output to you.
You can use the Test-Netonnection command and its other application parameters and no longer use add-ons for this.
Use the following command in PowerShell for information on other parameters and other examples of the Test-NetConnection command:
Also, see:
Dear user, we hope you would enjoy this tutorial, you can ask questions about this training in the comments section, or to solve other problems in the field of Eldernode training, refer to the Ask page section and raise your problem in it as soon as possible. Make time for other users and experts to answer your questions.
Goodluck.