1

PowerShell を使用しているときにこの奇妙な問題が発生しました。VM ツールの状態を確認するために while ループを実行すると、内部でのみスタックします。コードは次のとおりです。

Connect-VIServer $vmserver -User $vmuser -Password $vmpass
$status1 = (Get-VM  -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus 
Write-Host $status1

while(!($status1 -eq 'toolsOK')){
Write-Host "tool status is:" $status1
Start-Sleep -Seconds 5
}

Write-Host "success"

そのマシンがオフのときにこのコードを実行し、そのマシンを b/w で開始しました$vmname(同じステータスですが、ESXIステータスをチェックインすると実行中でした。スタックする可能性があるため、ENTER、マウスクリックなどを押しましたが、USEはありません..私はpowershell ISE-host、バージョン3.0を使用しています..

4

1 に答える 1

1

更新コードを 1 回だけ実行しています。while ループは sleep コマンドのみを実行し、write-host(変更されることはありません) これを試してください:

Connect-VIServer $vmserver -User $vmuser -Password $vmpass

do {
    #This will min. once, until $status is 'toolsOK'
    $status1 = (Get-VM  -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus

    if($status1 -ne 'toolsOK') { 
        Write-Host "tool status is:" $status
        Start-Sleep -Seconds 5
    }
}
until($status1 -eq 'toolsOK')

Write-Host "success"

また

Connect-VIServer $vmserver -User $vmuser -Password $vmpass
$status1 = (Get-VM  -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus

while ($status1 -ne 'toolsOK') {
    Write-Host "tool status is:" $status
    Start-Sleep -Seconds 5

    $status1 = (Get-VM  -Name $vmname).Extensiondata.Summary.Guest.ToolsStatus
}

Write-Host "success"
于 2013-05-29T14:36:56.687 に答える