对象与字符串输出

时间:2011-12-23 14:30:57

标签: powershell powershell-v2.0 powershell-v3.0

为什么我在powershell中运行此命令:

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

在查看变量$ output:

时,我在PowerGUI脚本编辑器控制台中获得此输出
?       Projects\TestProject\Thisisatest.txt
?       Projects\TestProject\Thisisatest - Copy.txt

但是当我运行此命令时:

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

我得到了这些结果:

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

似乎在使用[string]时它会进行某种类型的编码,它会占用换行符,我不确定为什么?

已更新 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

输出:

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

感谢任何可以提供帮助的人。

1 个答案:

答案 0 :(得分:4)

当PowerShell将数组转换为单个字符串时,它会将成员转换为字符串,并将它们与每个字符串之间的空格连接起来。

$output2 = [string]::join([environment]::newline, $output)会做你想做的事。