PowerShell脚本开发之对指定IP进行端口扫描

2019-09-30 13:20:27丽君

Step 6. 在Test-TCPPort.ps1语句的最后面添加Export-ModuleMember -Function * 语句用于将该文件中的函数都作为Module的成员发布。

     至此工具集的结构创建成功,目录树如下所示:


+D:MY DOCUMENTSWINDOWSPOWERSHELLMODULES
└─PSNet
    │  PSNet.psm1
    │ 
    └─TCPOp
            Test-TCPPort.ps1
     如果我们要在PSNet下创建关于UDP相关的操作可以与TCPOp同级创建UDPOp子模块目录,依次类推,与网络相关的操作子模块均放在PSNet下,再预先创建一个PSSecurity模块用于后续创建于安全相关的模块。目录结构如下:
D:MY DOCUMENTSWINDOWSPOWERSHELLMODULES
├─PSNet
│  │  PSNet.psm1
│  │ 
│  ├─TCPOp
│  │      Test-TCPPort.ps1
│  │     
│  └─UDPOp
└─PSSecurity

    对于Test-TCPPort.ps1子模块,写入以下代码用于实现对TCP端口是否监听进行测试:


Function Test-TCPPort
{
 param ( [ValidateNotNullOrEmpty()]
 [string] $EndPoint = $(throw "Please specify an EndPoint (Host or IP Address)"),
 [string] $Port = $(throw "Please specify a Port") )

 try
 {
  $TimeOut = 1000 #定义TCP端口超时时间
  if ( $IP = [System.Net.Dns]::GetHostAddresses($EndPoint) )
  {
   $Address = [System.Net.IPAddress]::Parse($IP)
   $Socket = New-Object System.Net.Sockets.TCPClient
   $Connect = $Socket.BeginConnect($Address,$Port,$null,$null)
   if ( $Connect.IsCompleted )
   {
    $Wait = $Connect.AsyncWaitHandle.WaitOne($TimeOut,$false)
    if(!$Wait)
    {
     $Socket.Close()
     return $false
    }
    else
    {
     $Socket.EndConnect($Connect)
     $Socket.Close()
     return $true
    }
   }
   else
   {
    return $false
   }
  }
  else
  {
   return $false
  }
 }
 catch{}
}

Export-ModuleMember -Function *  #用于将函数导出为模块成员

对于此模块可以通过PowerShell命令行使用以下语句 :