2010-10-18 12 views
0

我試圖用設置itemproperty將項目添加到: HKLM:\ SOFTWARE \微軟\的Windows \ CurrentVersion \ SETUP \安裝源設置-ItemProperty將不包括換行符(PowerShell中)

$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" 

我可以回顯$測試,它看起來很好,在我的結尾添加了幾行路徑。 但是,當我實際使用set-itemproperty時,它將所有內容壓縮成一行,這不起作用。每條路徑都需要有自己的路線。即使手動添加換行符也不會傳入(即:「`nC:\ Test \ I386」)。想法?

感謝

回答

0

$測試是一個字符串數組和PowerShell會自動將它們連接在一起時,你說:

"$test" 

你需要做的加入你自己,提供正確的分隔符。即:

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

如果您希望保留換行符然後確保註冊表值的類型多串的,否則註冊表將不允許換行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}