5

1.ps1 には、作成および印刷された 2 つのオブジェクトがあります。ただし、出力に表示されるのは 1 つだけです。両方のオブジェクトは、次の場合に表示されます:
(1) 書き込み出力は Format-List で行われます
(2) object1 には 4 つ以上のプロパティがあります (そのため、自動的に垂直にフォーマットされます)
この動作の背後にある理由を理解しようとしています。

PS C:\> cat .\1.ps1
$object1 = New-Object PSObject
$object1 | add-member NoteProperty -name pn1 -value pv1
$object1 | add-member NoteProperty -name pn2 -value pv2
$object1 | add-member NoteProperty -name pn3 -value pv3
write-output $object1

$object2 = New-Object PSObject
$object2 | add-member NoteProperty -name npn1 -value npv1
$object2 | add-member NoteProperty -name npn2 -value npv2
$object2 | add-member NoteProperty -name npn3 -value npv3
$object2 | add-member NoteProperty -name npn4 -value npv4
$object2 | add-member NoteProperty -name npn5 -value npv5
$object2 | add-member NoteProperty -name npn6 -value npv6
write-output $object2
PS C:\>
PS C:\> .\1.ps1

pn1                                     pn2                                     pn3
---                                     ---                                     ---
pv1                                     pv2                                     pv3


PS C:\>
4

3 に答える 3

2

情報を表示するだけの場合は、Write-Hostではなくを使用する必要がありますWrite-OutputWrite-Outputパイプラインでデータを送信するときに使用する必要があり、単にデータを表示するために使用しないでください。

より詳細な回答を提供する投稿は次のとおりです。「Write-Host」、「Write-Output」、または「[console]::WriteLine」のどれを使用する必要がありますか?

リンクから:

Write-Output は、パイプラインでデータを送信したいが、必ずしも画面に表示したくない場合に使用する必要があります。他に何も使用されていない場合、パイプラインは最終的に out-default に書き込みます。反対のことをしたい場合は、Write-Host を使用する必要があります。[console]::WriteLine は基本的に、Write-Host が舞台裏で行っていることです。

于 2013-08-02T18:15:25.753 に答える