Set-ItemProperty не будет включать переводы строк (powershell) - PullRequest
0 голосов
/ 19 октября 2010

Я пытаюсь использовать set-itemproperty для добавления элемента в: HKLM: \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Setup \ Installation Sources

$InstallationSources = Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" -Name "Installation Sources"
$test = $InstallationSources."Installation Sources" + "C:\Test\I386"
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" -Name "Installation Sources" "$test"

Я могу повторить $ testхорошо, несколько линий путей с моим дополнением в конце.Но когда я на самом деле использую set-itempproperty, он объединяет все в одну строку, что не работает.Каждый путь должен иметь свою собственную линию.Даже добавленные вручную новые строки не передаются (например: "` nC: \ Test \ I386 ").Идеи?

Спасибо

Ответы [ 2 ]

1 голос
/ 19 октября 2010

Если вы хотите сохранить символы новой строки, убедитесь, что значение реестра имеет тип MultiString, в противном случае реестр не допустит символы новой строки AFAICT, например ::

.
PS> New-ItemProperty hkcu:\ -Name bar -PropertyType MultiString
PS> Set-ItemProperty hkcu:\ -Name bar -Value "contents`r`nmore contents"
PS> Get-ItemProperty hkcu:\ -Name bar


PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\
PSParentPath :
PSChildName  : HKEY_CURRENT_USER
PSDrive      : HKCU
PSProvider   : Microsoft.PowerShell.Core\Registry
bar          : {contents
               more contents}
0 голосов
/ 19 октября 2010

$ test - это массив строк, и PowerShell автоматически объединяет их, когда вы говорите:

"$test"

Вам нужно сделать соединение самостоятельно, указав правильный символ-разделитель. i.e.:

Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" -Name "Installation Sources" ($test -join "`n")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...