您可以使用此功能(学分去托比亚斯Weltner,据我记得):
function Test-NetworkPort
{
param
(
$ComputerName = $env:COMPUTERNAME,
[int32[]]
[Parameter(ValueFromPipeline=$true)]
$Port = $(137..139 + 443 + 445),
[int32]
$Timeout=1000,
[switch]
$AllResults
)
process
{
$count = 0
ForEach ($PortNumber in $Port)
{
$count ++
$perc = $count * 100/$Port.Count
Write-Progress -Activity "Scanning on \\$ComputerName" -Status "Port $PortNumber" -PercentComplete $perc
# in PowerShell 2.0 muss [Ordered] entfernt werden
# dann ist die Reihenfolge der Eigenschaften aber zufällig.
$result = New-Object PSObject -Property ([Ordered]@{
Port="$PortNumber"
Open=$False
Type='TCP'
ComputerName=$ComputerName
})
$TCPClient = New-Object System.Net.Sockets.TcpClient
$Connection = $TCPClient.BeginConnect($ComputerName, $PortNumber, $null, $null)
try
{
if ($Connection.AsyncWaitHandle.WaitOne($Timeout, $false))
{
$null = $TCPClient.EndConnect($Connection)
$result.Open = $true
}
}
catch {}
finally { $TCPClient.Close() }
$result | Where-Object { $AllResults -or $_.Open }
}
}
}
使用方法如下Test-NetworkPort -Computername Tomcat1 -Port 80, 8080, 443 -Allresults
备注:如果使用PowerShell 2,您需要删除第012行的字[ordered
SO不是免费的翻译服务。你到目前为止试过了什么(显示你的代码),以及你需要什么特别的问题(在你的代码中)? –
你可能是对的我会尝试添加一些代码,:) – mustafa918
@AnsgarWiechers你可以看到这个编辑请 – mustafa918