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命令行使用以下语句 :










