SEブログ

【PowerShell】Write-Outputコマンドレットを使ってみる

こんにちは!

 

Write-Host は、コンソール画面の出力に限った用途と書きました。ここでは、とりあえず Write-Host にはなく Write-Output にある機能について説明します。

 

【PowerShell】Write-Hostコマンドレットを使ってみる

 

 

オブジェクトをパイプラインに渡せる

 

 

Write-Output も、文字列をコンソールに出力するという点では、Write-Host とも変わりませんが、オブジェクトをパイプラインに渡す事ができます。

以下の例は、“Hello World” という文字列のオブジェクトを、パイプラインで Get-Member というコマンドに渡しています

 

C:\> Write-Output "Hello World !!" | Get-Member


# 実行結果

TypeName: System.String

Name MemberType Definition 
---- ---------- ---------- 
Clone Method System.Object Clone(), System.Object ICloneable.Clone() 
CompareTo Method int CompareTo(System.Object value), int CompareTo(string ...
Contains Method bool Contains(string value) 
...
TrimEnd Method string TrimEnd(Params char[] trimChars) 
TrimStart Method string TrimStart(Params char[] trimChars) 
Chars ParameterizedProperty char Chars(int index) {get;} 
Length Property int Length {get;}

 

 

戻り値を変数に格納できる

 

 

また、Write-Host は文字列がホストに出力されますが、戻り値はなく $a は null(空っぽ) です。

 

C:\> $a = Write-Host "Hello World!!"
C:\> Hello World!! ← コンソールに出力されます。
C:\> $a
C:\>     ← $a の値には何も入っていません。空です。

 

 

上記に対して、Write-Output は文字列は出力されませんが、文字列が戻り値として変数に入っています。

 

C:\> $a = Write-Output "Hello World!!"
C:\> $a
"Hello World!!" ← $a の値には Hello World!! が入っている。

 

 

とりあえず以上になります。

 

いかがでしょうか。Write-Host と比較して、Write-Output の特徴がお分かり頂けたのではないかと思います。

 

 

では最後までお読みいただきありがとうございました!