我正在尝试使用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”)。想法?
由于
答案 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")