объект против строкового вывода - PullRequest
0 голосов
/ 23 декабря 2011

Почему я запускаю эту команду в powershell:

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

Я получаю этот вывод в консоли редактора сценариев PowerGUI при просмотре переменной $ output:

?       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 Ответ

4 голосов
/ 23 декабря 2011

Когда PowerShell преобразует массив в одну строку, он преобразует элементы в строки и объединяет их с пробелами между ними.

$output2 = [string]::join([environment]::newline, $output) будет делать то, что вы хотите.

...