0

poweshell コマンドからの出力をフォーマットするさまざまな方法を試しましたが、リスト内の行項目の一部のみを aa 列の一部として 1 行に出力したいと考えています。

おそらくもっと簡単に説明できます:

# I want the output from:
Get-CimInstance Win32_OperatingSystem | select Caption,Version,OSArchitecture,InstallDate | fl

Caption        : Microsoft HAL 9000
Version        : 6.3.9000
OSArchitecture : 64-bit
InstallDate    : 2018-08-16 00:50:01

# To look like this:
Microsoft HAL 9000 (6.3.9000) 64-bit  [2018-08-16 00:50:01]

どうすればこれを簡単に達成できますか?

(偶然にも、この場合はすべての行が必要ですが、不要な行も含まれている場合は、より一般的な回答の方が役立つ場合があります。)

4

3 に答える 3

3

通常、PowerShell はオブジェクトを返し、その文字列表現をホストに出力します。ホストへのカスタム文字列形式の出力が必要です。さまざまな方法でそれを実現できますが、最速の方法と私の推奨事項は、-f operatorを使用することです。

$OS = Get-CimInstance Win32_OperatingSystem

'{0} ({1}) {2} [{3}]' -f $OS.Caption, $OS.Version, $OS.OSArchitecture, $OS.InstallDate

使用here-stringsすると、複数行で同じことができます。

$OS = Get-CimInstance Win32_OperatingSystem

@'
My OS is {0} {1})
Architecture --> {2}
Installation Date: [{3}]
'@ -f $OS.Caption, $OS.Version, $OS.OSArchitecture, $OS.InstallDate

ただし、可能な限りオブジェクトを操作する必要があります。

于 2018-12-08T12:39:59.043 に答える