2011-12-23 4 views
0

なぜそれがです:オブジェクトが

$output = (svn stat) -match '^\?' # which $output is an [object] in this case. 

変数$出力を表示するとき、私はPowerguiブロックスクリプトエディタコンソールでこの出力を得る:

?  Projects\TestProject\Thisisatest.txt 
?  Projects\TestProject\Thisisatest - Copy.txt 

が、私は、このコマンドを実行すると:

[string] $output = (svn stat) -match '^\?' 

を私はこれらの結果を得る:

[文字列]を使用すると、改行を取り除く何らかのタイプのエンコードが行われているようですが、その理由はわかりません。助けることができる誰のための

$output results 
?  Projects\TestProject\Thisisatest.txt 
?  Projects\TestProject\Thisisatest - Copy.txt 
$output2 results 
?  Projects\TestProject\Thisisatest.txt ?  Projects\TestProject\Thisisatest - Copy.txt 

ありがとう:ここ user978511を更新し

は小さなサンプルコードと出力

Clear-Host 
Set-Location "C:\svn\Development\Projects\TestProjects\build" 
$output = (svn stat) -match '^\?' 
'$output results' 
$output 

'$output2 results' 
[string] $output2 = (svn stat) -match '^\?' 
$output2 

出力されます。

+0

どのような動作が必要ですか? –

答えて

4

PowerShellは、配列を単一の文字列にキャストすると、メンバを文字列に変換し、文字列間のスペースで連結します。

$output2 = [string]::join([environment]::newline, $output)あなたが望むことをします。

+0

ありがとう、それは働いた!だから(svn stat)-match '^ \?'文字列の配列を返していますか? –

+2

ほとんどのコマンドラインコマンドは、一種のWriteLineメソッドを使用してユーザーにフィードバックを提供します。出力を変数に代入するとき、Powershellは各行をオブジェクトに格納し、その中から配列を作成します。オブジェクト配列は、文字列配列にダウンキャストすることができます。また、 '-join'オペレータを使って、提供されている構文jonを簡略化することもできます。 '-join'演算子を使った例です:' $ output2 = $ output -join [environment] :: newline'。 –

+0

情報ありがとう! –