2017-03-29 5 views
0
Connect-VIServer XXXX 

[System.Collections.ArrayList][email protected]() 
$vms = Get-VM | Where-Object {$_.Name -like 'XXX*'} 
try{ 
ForEach ($v in $vms) 
    { 
    foreach ($d in $v.ExtensionData.Guest.Disk) 
    { 
    $usedSpace = $d.Capacity - $d.FreeSpace 
    $percentUsed = [math]::Round(($usedSpace/$d.Capacity) * 100) 

    $List = New-Object -TypeName PSObject -Property @{ 
     SERVER_NAME = $v.Name | Out-String 
      "Total_Capacity(GB)" = [math]::round([int]($d.Capacity/1GB), 1) 
      "Free_Space(GB)" = [math]::round([int]($d.FreeSpace/1GB), 1) 
      PercentFull = "$percentUsed%" 
         } 
       #Write-Host "$ErrorList" 
      $Result+=$List 
    } 
    } 
} 
catch [Exception] 
{ 
write-host "OD-VM-Monitor: $v : FATAL SCRIPT ERROR" $_.Exception.Message 
} 

私は上記のスクリプトを実行しました。しかし、結果を表示しようとしている間、以下のようにドットで表示されています。私は以下の2つを試しました。出力をフルストリングで表示したい

$Result | Select-Object SERVER_NAME, 'Total_Capacity(GB)', 'Free_Space(GB)', PercentFull | Out-String -Width 4096 | ft -auto 
$Result | Select-Object SERVER_NAME, 'Total_Capacity(GB)', 'Free_Space(GB)', PercentFull | Format-Table -AutoSize 

SERVER_NAME  Total_Capacity(GB) Free_Space(GB) PercentFull 
-----------  ------------------ -------------- ----------- 
XXXXXXX...    200   113 43% 
XXXXXXX...    150    50 67% 
XXXXXXX...    150    31 79% 
XXXXXXX...    100    32 68% 
XXXXXXX...    500    87 83% 
XXXXXXX...    100    43 57% 
XXXXXXX...    100    36 64% 
XXXXXXX...    150    37 75% 

どのようにドットを消し去るか考えてください。 ありがとうございます。

答えて

0

文字列が画面(コンソールウィンドウ)で広すぎるからです。 format-tableの代わりにformat-listを試して、データが破壊されていないことを確認してください。

これは、両方のプログラムとGUIを介してサイズを変更するためのガイドである:https://blogs.technet.microsoft.com/heyscriptingguy/2006/12/04/how-can-i-expand-the-width-of-the-windows-powershell-console/

+0

ここではウィンドウサイズを変更していません。 ドットを含まないファイルに出力全体を書き込む方法はありますか? –

+0

'format-list'は機能しましたか? –

+0

ファイルへの書き込みは、export-csvまたはout-file ...で行うことができますが、これは問題ではありません –

0

形式-表hash table特定列幅を取ることができます。

関連する問題