Comment vérifier les ports ouverts à l'aide de powershell?
Je voudrais écrire un script pour vérifier radom IP ou le nom d'hôte pour voir si les ports sont ouverts. Voici ce que j'ai jusqu'à présent. Les scripts nom est checkports.
foreach ($xhost in $computername){
Write-Host $xhost
foreach ($port in $ports) {
$Socket = New-Object System.Net.Sockets.TCPClient
$Connection = $Socket.BeginConnect($xhost,$port,$null,$null)
$Connection.AsyncWaitHandle.WaitOne(5000,$false) | out-null
if ($Connection -eq $true)
{ write-host = "$xhost port $port is open" }
else
{ write-host = "port $port is closed" }
$Socket.EndConnect($Connection)
$Socket.Close()
}
}
Je voudrais les valeurs d'entrée de la manière suivante:
.\checkport '192.186.1.5'
ou
'192.168.1.5', '192.168.1.105', 192.168.1.110' | checkport
Il ne semble pas être la lecture de l'adresse IP ou l'affichage des résultats.
Je me demandais si quelqu'un peut il pourrait me montrer ce que je fais de mal avec ce script?
- Ceci et ceci peut être d'une certaine aide.
- Pouvez-vous montrer à votre bloc param pour le script?
- 1. La valeur de retour de
WaitOne
est vous dire si l'attente terminée ou a expiré: mais vous êtes de le jeter. 2. Pourquoi ne pas utiliser le blocageSocket.Connect
donné que vous allez à bloquer? - Voici l'essentiel avec un script powershell qui vérifie les ports ouverts gist.github.com/dhcgn/44acdddbaea24d2f367d85a00389368c
Vous devez vous connecter pour publier un commentaire.
J'ai été en mesure d'utiliser le Test-Port la fonction de Boe Prox similaires scan/fonctions de production de rapports, le code est disponible sur PoshCode:
http://poshcode.org/2514
Quand j'ai besoin de tester les ports pour le Répertoire de la santé, j'ai construit un csv avec le 'port' et 'protocole' colonnes, puis ajouter le numéro de port/protocole pour chaque port à vérifier. Cela a été utilisé dans le script suivant:
Vous pourrait certainement construire un chargeur de script pour construire la plage d'adresses IP et de ports à scanner.