21

リストから一部の PC の最終再起動時刻を取得しようとしています。私が使うとき

foreach ($pc in $pclist) {
  Get-CimInstance -ClassName win32_operatingsystem -ComputerName $pc |
    select csname, lastbootuptime 
}

出力は次のようになります。

csname lastbootuptime
------ --------------
CONFA7-L1-1A 2016 年 7 月 15 日 9:55:16 午前
CONFA7-L1-1F 2016/5/31 8:51:46 AM
CONFA7-L1-1G 2016 年 6 月 18 日 11:09:15 午前
CONFA7-L1... 2016/06/26 17:31:31
CONFA7-L3... 2016/07/24 15:48:43

これはいいのですが、PC 名が長いとフルネームが見えません。だから私はパイプライン化しましたFormat-Table:

Get-CimInstance -ClassName win32_operatingsystem -ComputerName $pc |
  select csname, lastbootuptime |
  Format-Table  -HideTableHeaders 

そして、これは私が得るものです:

CONFA7-L1-1A 2016 年 7 月 15 日 9:55:16 午前



CONFA7-L1-1E 2016/7/21 12:58:16 PM



CONFA7-L1-1F 2016/5/31 8:51:46 AM

ここには 2 つの問題があります。

  1. 見出しはありません。削除-HideTableHeadersすると、必要のないすべての出力の見出しが表示されます。

  2. 間に空白がたくさんあります。

基本的に、最初のものと同様の出力を取得する必要がありますが、完全な名前を切り捨てることはありません。これらを修正するにはどうすればよいですか?

4

2 に答える 2

42
于 2016-07-25T19:59:17.193 に答える
17

Width特定の長さを超えてデータをトリミングし、手動で列幅を指定する場合は、各プロパティ属性にプロパティを渡すことができます。

たとえば、データを次のようにしたい場合:

Column 1    Column 2      Column 3      Column 4
--------    --------      --------      --------
Data        Lorem ip...   Lorem ip...   Important data

Format-Table明示的なプロパティのリストを含む基本的な構文は次のとおりです。

$data | Format-Table -Property Col1, Col2, Col3, Col4 -AutoSize

プロパティ名を渡すだけでなく、追加のメタデータを にProperty追加できます。

$a = @{Expression={$_.Col1}; Label="Column 1"; Width=30}, 
     @{Expression={$_.Col2}; Label="Column 2"; Width=30}, 
     @{Expression={$_.Col3}; Label="Column 3"; Width=30}, 
     @{Expression={$_.Col4}; Label="Column 4"; Width=30}
$data | Format-Table -Property $a

:これはmklement0のより完全な回答の下部でカバーされていることを認識していますが、これがユースケースであり、すばやくスクロールしている場合、これがこの戦略を高レベルで強調するのに役立つことを願っています

于 2018-09-04T21:56:43.983 に答える