Можно ли передать многострочную строку в svn в PowerShell?

Можно ли передать многострочную строку в svn в PowerShell?

У меня в скрипте есть следующая строка:

svn propset svn:externals $newExternals $path

Теперь впервые $newExternalsпоявляется многострочная строка (имеется несколько svn:externalсвойств) и svnона лает на меня таким образом, что, по-видимому, показывает, что она не может справиться с аргументом.

Могу ли я передать многострочную строку в программу, которую я вызываю в PowerShell?Или проблема в том, что svnя не могу это разобрать? Или мне нужны кавычки? (Не помогло, но я мог накосячить в чем-то другом.)


Если это не сработает, то svnтакже примем файл для чтения данных:

svn propset svn:externals -F externals.txt $path

Однако, похоже, это не срабатывает, поскольку svnожидает externals.txtфайл ASCII (или UTF-8, я не уверен, но не думаю, что это имеет значение), в то время как PowerShell по умолчанию пишет UTF-16. Так какой же канонический способ передать что-либо в файл ASCII?


В качестве дополнительного вопроса: каков канонический способ получения пути для создания временного файла?

решение1

[io.path]::GetTempFileName() вернет имя временного файла (включая путь)

решение2

Я не очень хорошо знаком с svn, поэтому извините, если следующее не относится к делу... но вы, безусловно, можете передавать многострочные строки в Powershell или в вызываемую программу Powershell (при условии, что вызываемая программа поддерживает это).

Вот один из способов, который мне особенно нравится, из Technet Windows Powershell Tip of the Week. (Powershell 'Here-Strings').

А вот еще один, из ответа SO, хотя я понятия не имею, будет ли это работать с вызванной программой... просто это изначально работает в PowerShell.

Наконец, строки (во всех разновидностях) могут также выходить за пределы одной строки:

'Foo
bar'

Если ни один из методов не сработал, я бы сказал, что вы столкнулись с ограничением svn.

решение3

В Windows временную папку пользователя можно найти с помощью системной переменной TEMP или TMP.

[Batch]
echo %TEMP%
echo %TMP%

[Powershell]
echo $env.temp
echo $env.tmp

Связанный контент