Set-ItemProperty不包含换行符(powershell)

时间:2010-10-18 20:14:05

标签: powershell registry

我正在尝试使用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 个答案:

答案 0 :(得分:1)

如果要保留换行符,请确保注册表值的类型为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}

答案 1 :(得分:0)

$ test是一个字符串数组,当你说:

时,powershell会自动将它们连接在一起
"$test"

您需要自己进行连接,并提供正确的分隔符。即:

Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup" -Name "Installation Sources" ($test -join "`n")