我创建了一个在Hyper-V下运行的CentOS 7最小虚拟机。为此,我安装了Transmission并将其设置为使用 systemctl enable transmission-daemon.service
启动服务。我想编写一个PowerShell脚本来启动服务器,等到它处于活动状态,然后打开一个url来查看Transmission web界面。
我使用了 Get-VMIntegrationService ,但是在启动过程中,这会为心跳返回一个OK值。因此,我不得不求助于开始 - 睡眠再等15秒,以便当我的脚本打开浏览器时,它不会超时。
有没有办法建立登录界面?或者更优雅的方式呢?
这是我目前的启动PowerShell脚本:
$vmToStart="CentOS_7_minimal"
$url="http://"+$vmToStart+":9091/"
if ((Get-VMIntegrationService $vmToStart | ?{$_.name -eq "Heartbeat"}).PrimaryStatusDescription -ne "OK")
{
Write-Host "Starting Transmission server..." -foregroundcolor "blue"
start-vm $vmToStart
do {Start-Sleep -milliseconds 100}
until ((Get-VMIntegrationService $vmToStart | ?{$_.name -eq "Heartbeat"}).PrimaryStatusDescription -eq "OK")
Write-Host "Transmission server started." -foregroundcolor "yellow"
Write-Host "Starting Transmission service..." -foregroundcolor "blue"
Start-Sleep -seconds 15
}
Start-Process $url
答案 0 :(得分:0)
优雅不是,但您只需通过轮询就可以检查您需要的网站是否可用。 .NET Webclient非常简单易用。请参阅下面的示例。
$webClient = New-Object System.Net.WebClient
$url = "http://www.stackoverflow.com"
Do {
Start-Sleep -Seconds 1
try { $content = $webClient.DownloadString($url) }
catch { Write-Host "Page not yet retrieved . . ."}
} While ( $content -eq $null)