Powershell 检查HTTP端口是否在Windows上打开
我试图在运行jar文件后检查Tomcat是否准备就绪。我在StackOverflow上发现了这段代码,我想编写与Windows bash等效的代码 我的想法是登录文件,并在日志文件中每隔10秒钟检查一句话,当tomcat完成加载时会出现这句话 这是我的代码:Powershell 检查HTTP端口是否在Windows上打开,powershell,batch-file,tomcat,Powershell,Batch File,Tomcat,我试图在运行jar文件后检查Tomcat是否准备就绪。我在StackOverflow上发现了这段代码,我想编写与Windows bash等效的代码 我的想法是登录文件,并在日志文件中每隔10秒钟检查一句话,当tomcat完成加载时会出现这句话 这是我的代码: @echo off start javaw -jar ICAPS_DASHBOARD-0.1.0-SNAPSHOT.jar 1>> log.txt ::loop will be here findstr /m "Starte
@echo off
start javaw -jar ICAPS_DASHBOARD-0.1.0-SNAPSHOT.jar 1>> log.txt
::loop will be here
findstr /m "Started IcapsDashboardApplication" log.txt
if %errorlevel%==0 (
echo There is hope!
goto fin
)
echo no hope
:fin
echo fin
pause >nul
但是我在日志文件里什么都没有
如果我这样做了
javaw -jar ICAPS_DASHBOARD-0.1.0-SNAPSHOT.jar 1>> log.txt
他不执行下面的命令。
谢谢您可以使用此功能(据我记忆所及,积分归Tobias Weltner):
像这样使用它testnetworkport-Computername Tomcat1-Port 808080443-Allresults
备注:如果使用Powershell 2,您需要删除第24行的单词
[ordered
,因此这不是免费翻译服务。到目前为止您尝试了什么(显示代码),以及(代码中)有什么特殊问题你需要帮助吗?也许你是对的,我会尝试添加一些代码,:)@AnsgarWiechers你能看到这个编辑吗?请注意,你的问题不是,现在如何测试开放端口?如果你在开始之前考虑一下你想要实现什么,那将是非常好的。。
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 }
}
}
}