2012-01-19 8 views
2

現在、レジストリにアクセスしようとしていますが、適切な値を持つすべてのサブキーを取得してから、これらの値をXML設定に置き換えようとしています。例えばPowershell - XML設定データを検索してレジストリ値に置き換えます

:次の値が格納されているXML文書内

<Name = "Test" Value = "\\somelocation\TOKEN\Application" /> 
<Name = "Test1" Value = "\\somelocation\TOKEN\Deployment" /> 

レジストリキーがトークン値を保持します。

TOKEN = LifeCycleManagement

そこで私が欲しいです"\ somelocation \ TOKEN *"を "\ somelocation \ LifeCycleManagement *"に置換するpowershell

何かお考えですか?

は現在、私は次のコードをしようとしています:。

$lineElement = @() 

$regItems = Get-ItemProperty registrylocation 
Get-ItemProperty registrylocation > c:\DEV\output.txt 
$contents = Get-Content c:\DEV\output.txt 

foreach ($line in $contents) 
{ 
    $line = $line -split(":") 
    $lineElement += $line[0] 
} 

foreach ($element in $lineElement) 
{ 
    $element 
    $regItems.$element 
} 

$ regItemsを$要素は、任意の結果が返されていません。

Token........: LifeCycleManagement:あなたのコードで

答えて

2

は、一般的に$lineは、最初は一般的に次のようになります。あなたが:にあなたのラインを分割し、最初の部分を取るときToken..........のはスペースです)を得るでしょう。明らかに$regItems.Token.........は、あなたが後になったものではありません。あなたは$lineの最後のスペースを取り除くべきです。これはTrim()を使用して行うことができます。以下のサンプルコードはあなたの問題を解決します。

$lineElement = @() 

$regItems = Get-ItemProperty registrylocation 
Get-ItemProperty registrylocation > c:\DEV\output.txt 
$contents = Get-Content c:\DEV\output.txt 

foreach ($line in $contents) 
{ 
    $line = $line -split(":") 
    $lineElement += ($line[0]).Trim() 
} 

foreach ($element in $lineElement) 
{ 
    $element 
    $regItems.$element 
} 
関連する問題