Powershell 检查HTTP端口是否在Windows上打开

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

我试图在运行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 "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 }
        }
    }
}