PoshCode Archive  Hex Artifact Content

Artifact 183ea988ad7bf2c7dbc7a3f6b6f769de6b0ae027f90200c8b1a8ec66088bbb01:

  • File Test-TCPPort.ps1 — part of check-in [f1c95e17df] at 2018-06-10 13:19:37 on branch trunk — - NOTES (user: ChristopheCREMON size: 1535)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 70 6f 77 65 72 73  i..# api: powers
0020: 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65 3a 20 54  hell..# title: T
0030: 65 73 74 2d 54 43 50 50 6f 72 74 0d 0a 23 20 64  est-TCPPort..# d
0040: 65 73 63 72 69 70 74 69 6f 6e 3a 20 2d 20 4e 4f  escription: - NO
0050: 54 45 53 0d 0a 23 20 76 65 72 73 69 6f 6e 3a 20  TES..# version: 
0060: 30 2e 31 0d 0a 23 20 74 79 70 65 3a 20 66 75 6e  0.1..# type: fun
0070: 63 74 69 6f 6e 0d 0a 23 20 61 75 74 68 6f 72 3a  ction..# author:
0080: 20 43 68 72 69 73 74 6f 70 68 65 43 52 45 4d 4f   ChristopheCREMO
0090: 4e 0d 0a 23 20 6c 69 63 65 6e 73 65 3a 20 43 43  N..# license: CC
00a0: 30 0d 0a 23 20 66 75 6e 63 74 69 6f 6e 3a 20 54  0..# function: T
00b0: 65 73 74 2d 54 43 50 50 6f 72 74 0d 0a 23 20 78  est-TCPPort..# x
00c0: 2d 70 6f 73 68 63 6f 64 65 2d 69 64 3a 20 33 30  -poshcode-id: 30
00d0: 35 35 0d 0a 23 20 78 2d 64 65 72 69 76 65 64 2d  55..# x-derived-
00e0: 66 72 6f 6d 2d 69 64 3a 20 33 30 35 38 0d 0a 23  from-id: 3058..#
00f0: 20 78 2d 61 72 63 68 69 76 65 64 3a 20 32 30 31   x-archived: 201
0100: 31 2d 31 32 2d 31 30 54 32 31 3a 30 36 3a 31 31  1-12-10T21:06:11
0110: 0d 0a 23 20 78 2d 70 75 62 6c 69 73 68 65 64 3a  ..# x-published:
0120: 20 32 30 31 31 2d 31 31 2d 32 30 54 31 33 3a 33   2011-11-20T13:3
0130: 35 3a 30 30 0d 0a 23 0d 0a 23 20 41 75 74 68 6f  5:00..#..# Autho
0140: 72 20 3a 20 43 68 72 69 73 74 6f 70 68 65 20 43  r : Christophe C
0150: 52 45 4d 4f 4e 20 28 75 78 6f 6e 65 29 20 96 20  REMON (uxone) . 
0160: 68 74 74 70 3a 2f 2f 70 6f 77 65 72 73 68 65 6c  http://powershel
0170: 6c 2e 63 6f 64 65 70 6c 65 78 2e 63 6f 6d 0d 0a  l.codeplex.com..
0180: 23 20 52 65 71 75 69 72 65 73 20 3a 20 50 6f 77  # Requires : Pow
0190: 65 72 53 68 65 6c 6c 20 56 32 0d 0a 23 20 2d 52  erShell V2..# -R
01a0: 65 76 69 73 69 6f 6e 20 48 69 73 74 6f 72 79 3a  evision History:
01b0: 0d 0a 23 20 32 30 31 31 2d 31 31 2d 32 30 3a 20  ..# 2011-11-20: 
01c0: 41 6e 64 79 20 41 72 69 73 6d 65 6e 64 69 20 e2  Andy Arismendi .
01d0: 80 93 20 41 64 64 65 64 20 65 72 72 6f 72 20 68  .. Added error h
01e0: 61 6e 64 6c 69 6e 67 2c 20 66 6f 72 63 69 6e 67  andling, forcing
01f0: 20 75 73 65 20 6f 66 20 49 50 20 76 34 20 73 6f   use of IP v4 so
0200: 20 74 68 65 20 49 50 41 64 64 72 65 73 73 20 70   the IPAddress p
0210: 61 72 73 65 20 6d 65 74 68 6f 64 20 64 6f 65 73  arse method does
0220: 6e e2 80 99 74 20 62 6f 6d 62 2e 0d 0a 23 20 54  n...t bomb...# T
0230: 65 73 74 20 69 66 20 61 20 54 43 50 20 50 6f 72  est if a TCP Por
0240: 74 20 69 73 20 6f 70 65 6e 20 6f 72 20 6e 6f 74  t is open or not
0250: 2e 0d 0a 23 20 2d 20 45 6e 64 50 6f 69 6e 74 20  ...# - EndPoint 
0260: 63 61 6e 20 62 65 20 61 20 68 6f 73 74 6e 61 6d  can be a hostnam
0270: 65 20 6f 72 20 61 6e 20 49 50 20 61 64 64 72 65  e or an IP addre
0280: 73 73 0d 0a 23 20 2d 20 45 58 41 4d 50 4c 45 0d  ss..# - EXAMPLE.
0290: 0a 23 20 54 65 73 74 2d 54 43 50 50 6f 72 74 20  .# Test-TCPPort 
02a0: 2d 45 6e 64 50 6f 69 6e 74 20 73 65 72 76 65 72  -EndPoint server
02b0: 31 20 2d 50 6f 72 74 20 38 30 20 0d 0a 23 20 52  1 -Port 80 ..# R
02c0: 65 74 75 72 6e 20 74 72 75 65 20 69 66 20 70 6f  eturn true if po
02d0: 72 74 20 69 73 20 6f 70 65 6e 2c 20 66 61 6c 73  rt is open, fals
02e0: 65 20 6f 74 68 65 72 77 69 73 65 0d 0a 23 0d 0a  e otherwise..#..
02f0: 66 75 6e 63 74 69 6f 6e 20 54 65 73 74 2d 54 43  function Test-TC
0300: 50 50 6f 72 74 20 7b 0d 0a 09 70 61 72 61 6d 20  PPort {...param 
0310: 28 0d 0a 09 09 5b 70 61 72 61 6d 65 74 65 72 28  (....[parameter(
0320: 4d 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 29  Mandatory=$true)
0330: 5d 0d 0a 09 09 5b 73 74 72 69 6e 67 5d 20 24 43  ]....[string] $C
0340: 6f 6d 70 75 74 65 72 4e 61 6d 65 2c 0d 0a 09 09  omputerName,....
0350: 0d 0a 09 09 5b 70 61 72 61 6d 65 74 65 72 28 4d  ....[parameter(M
0360: 61 6e 64 61 74 6f 72 79 3d 24 74 72 75 65 29 5d  andatory=$true)]
0370: 0d 0a 09 09 5b 73 74 72 69 6e 67 5d 20 24 50 6f  ....[string] $Po
0380: 72 74 0d 0a 09 29 0d 0a 09 0d 0a 09 74 72 79 20  rt...)......try 
0390: 7b 0d 0a 09 09 24 54 69 6d 65 4f 75 74 20 3d 20  {....$TimeOut = 
03a0: 35 30 30 30 0d 0a 09 09 24 49 73 43 6f 6e 6e 65  5000....$IsConne
03b0: 63 74 65 64 20 3d 20 24 66 61 6c 73 65 0d 0a 09  cted = $false...
03c0: 09 24 41 64 64 72 65 73 73 65 73 20 3d 20 5b 53  .$Addresses = [S
03d0: 79 73 74 65 6d 2e 4e 65 74 2e 44 6e 73 5d 3a 3a  ystem.Net.Dns]::
03e0: 47 65 74 48 6f 73 74 41 64 64 72 65 73 73 65 73  GetHostAddresses
03f0: 28 24 43 6f 6d 70 75 74 65 72 4e 61 6d 65 29 20  ($ComputerName) 
0400: 7c 20 3f 20 7b 24 5f 2e 41 64 64 72 65 73 73 46  | ? {$_.AddressF
0410: 61 6d 69 6c 79 20 2d 65 71 20 27 49 6e 74 65 72  amily -eq 'Inter
0420: 4e 65 74 77 6f 72 6b 27 7d 0d 0a 09 09 24 41 64  Network'}....$Ad
0430: 64 72 65 73 73 20 3d 20 5b 53 79 73 74 65 6d 2e  dress = [System.
0440: 4e 65 74 2e 49 50 41 64 64 72 65 73 73 5d 3a 3a  Net.IPAddress]::
0450: 50 61 72 73 65 28 24 41 64 64 72 65 73 73 65 73  Parse($Addresses
0460: 29 0d 0a 09 09 24 53 6f 63 6b 65 74 20 3d 20 4e  )....$Socket = N
0470: 65 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65 6d  ew-Object System
0480: 2e 4e 65 74 2e 53 6f 63 6b 65 74 73 2e 54 43 50  .Net.Sockets.TCP
0490: 43 6c 69 65 6e 74 0d 0a 09 09 0d 0a 09 09 24 43  Client........$C
04a0: 6f 6e 6e 65 63 74 20 3d 20 24 53 6f 63 6b 65 74  onnect = $Socket
04b0: 2e 42 65 67 69 6e 43 6f 6e 6e 65 63 74 28 24 41  .BeginConnect($A
04c0: 64 64 72 65 73 73 2c 20 24 50 6f 72 74 2c 20 24  ddress, $Port, $
04d0: 6e 75 6c 6c 2c 20 24 6e 75 6c 6c 29 0d 0a 09 09  null, $null)....
04e0: 24 57 61 69 74 20 3d 20 24 43 6f 6e 6e 65 63 74  $Wait = $Connect
04f0: 2e 41 73 79 6e 63 57 61 69 74 48 61 6e 64 6c 65  .AsyncWaitHandle
0500: 2e 57 61 69 74 4f 6e 65 28 24 54 69 6d 65 4f 75  .WaitOne($TimeOu
0510: 74 2c 20 24 66 61 6c 73 65 29 09 0d 0a 09 09 0d  t, $false)......
0520: 0a 09 09 69 66 20 28 20 24 53 6f 63 6b 65 74 2e  ...if ( $Socket.
0530: 43 6f 6e 6e 65 63 74 65 64 20 29 20 7b 0d 0a 09  Connected ) {...
0540: 09 09 24 49 73 43 6f 6e 6e 65 63 74 65 64 20 3d  ..$IsConnected =
0550: 20 24 74 72 75 65 0d 0a 09 09 7d 20 65 6c 73 65   $true....} else
0560: 20 7b 0d 0a 09 09 09 24 49 73 43 6f 6e 6e 65 63   {.....$IsConnec
0570: 74 65 64 20 3d 20 24 66 61 6c 73 65 0d 0a 09 09  ted = $false....
0580: 7d 0d 0a 09 09 0d 0a 09 7d 20 63 61 74 63 68 20  }.......} catch 
0590: 7b 0d 0a 09 09 57 72 69 74 65 2d 57 61 72 6e 69  {....Write-Warni
05a0: 6e 67 20 24 5f 0d 0a 09 09 24 49 73 43 6f 6e 6e  ng $_....$IsConn
05b0: 65 63 74 65 64 20 3d 20 24 66 61 6c 73 65 0d 0a  ected = $false..
05c0: 09 7d 20 66 69 6e 61 6c 6c 79 20 7b 0d 0a 09 09  .} finally {....
05d0: 24 53 6f 63 6b 65 74 2e 43 6c 6f 73 65 28 29 0d  $Socket.Close().
05e0: 0a 09 09 72 65 74 75 72 6e 20 24 49 73 43 6f 6e  ...return $IsCon
05f0: 6e 65 63 74 65 64 0d 0a 09 7d 0d 0a 7d 0d 0a     nected...}..}..