2017-05-31 26 views
-1

這裏是我的代碼,輸出應該會顯示每5秒 但現在我看不到任何東西,當腳本運行在同時{}代碼後,輸出將在同一時間顯示出來,你可以看到圖片連接很奇怪,當我運行的PowerShell,輸出對象應該出現一個接一個,但現在不是

但是當我改變這種 $ ShowStatus |英尺-AutoSize 到 寫主機$ showstatus 我可以每5秒鐘以這種格式查看輸出 @ {ResourceGroup = mxytest; VMNAME = AD-BJ; OS =視窗;靜態=運行;時間= 2017年/ 5/31 17時33分27秒}

if ($VMJobIDs -ne $null) 
{ 
    $NotCompleted = $true 
    while ($NotCompleted) 
    { 
     $NotCompleted = $false 
     [pscustomobject[]]$ShowStatus = $null 
     foreach ($VMJobID in $VMJobIDs) 
     { 
      #Write-Host "$(Get-Date)" -ForegroundColor Yellow 
      $VMJob = Get-Job -Id $VMJobID 
      if ($VMJob.State -eq "Completed") 
      { 
       if ($VMJob.HasMoreData) 
       { 
        $FinalResult = $null 
        $FinalResult = New-Object -TypeName psobject 
        $Result = Receive-Job -Id $VMJob.id 
        $FinalResult | Add-Member -MemberType NoteProperty -Name ResourceGroup -Value $ResourceGroupName 
        $FinalResult | Add-Member -MemberType NoteProperty -Name VMName -Value $($VMJob.Name) 
        $FinalResult | Add-Member -MemberType NoteProperty -Name OS -Value $VMOSInfo.($VMJob.Name) 
        $FinalResult | Add-Member -MemberType NoteProperty -Name Succeed -Value $($Result.IsSuccessStatusCode) 
        $FinalResult | Add-Member -MemberType NoteProperty -Name Time -Value $(Get-Date) 
        $FinalResults += $FinalResult 
       } 
      } 
      else 
      { 
       $NotCompleted = $true 
      } 
      $Show = $null 
      $Show = New-Object -TypeName psobject 
      $Show | Add-Member -MemberType NoteProperty -Name ResourceGroup -Value $ResourceGroupName 
      $Show | Add-Member -MemberType NoteProperty -Name VMName -Value $($VMJob.Name) 
      $Show | Add-Member -MemberType NoteProperty -Name OS -Value $($VM.StorageProfile.OsDisk.OsType.Tostring()) 
      $Show | Add-Member -MemberType NoteProperty -Name static -Value $($VMJob.State) 
      $Show | Add-Member -MemberType NoteProperty -Name Time -Value $(Get-Date) 
      $ShowStatus += $Show 
     } 
     #Write-Host ("$(Get-Date) * Trying to install the extension...Please wait") -ForegroundColor Yellow 
     $ShowStatus|ft -AutoSize 
     #Write-Host ("$(Get-Date) * Trying to install the extension...Please wait") -ForegroundColor Yellow 
     Start-Sleep 5 

    } 
} 
if ($FinalResults -ne $null) 
{ 
    return $FinalResults 
} 

enter image description here

+0

**你的代碼在哪裏?懇求[編輯]你的問題並分享[mcve]。 – JosefZ

+0

抱歉,現在附上onedrive鏈接,您可以看到它 – mxy

+1

請避免截圖和外部鏈接。 MCVe不會很長時間才能添加。 – Clijsters

回答

0

更改這些行:

$ShowStatus += $Show 
} 

$ShowStatus|ft -AutoSize 
Start-Sleep 5 

向該:

$ShowStatus += $Show 
    $ShowStatus|ft -AutoSize 
    Start-Sleep 5 
} 

編輯 - 以上不適用於OP

從評論,這聽起來像Write-Host是給你你想要的行爲。所以一直用它:

Write-Host $ShowStatus.ResourceGroup $ShowStatus.VMName $ShowStatus.OS $ShowStatus.static $ShowStatus.Time 

這並不一定給你一個很好的表,但它看起來像你的數據是每個字段的長度相同,每個行。

您可以使用標籤,像這樣:

Write-Host "$($ShowStatus.ResourceGroup)`t$($ShowStatus.ResourceGroup)`t etc" 

可以顯示對齊文本行左右,但假設這會給你同樣的問題,因爲以前曾試圖讓每一個5秒的輸出:

# "-10" means 10 characters for this field, left aligned. "10" = right aligned 
"{0,-10} {1,-10} ..." -f $ShowStatus.ResourceGroup $ShowStatus.VMName ... 
+0

對不起,但它沒有用..我不明白爲什麼我看不到輸出 – mxy

+0

我認爲這是由於輸出在'foreach'循環之外。如果情況並非如此,那麼在處理工作時可能會出現這種情況(我對他們不熟悉)。 – gms0ulman

+0

它不應該是有些邏輯問題,foreach循環之外,還有一個while循環,我只是發現如果我改變$ ShowStatus |英尺-AutoSize寫主機$ showstatus我可以看到這種格式輸出每5秒@ {資源組= mxytest; VMNAME = AD-BJ; OS =視窗;靜態=運行;時間= 2017年/ 5/31日17時33分27秒},真不知道爲什麼從 – mxy

相關問題