Powershell - 使用Registry值查找和替换XML配置数据

时间:2012-01-19 12:05:03

标签: .net xml powershell registry

我目前正在尝试访问注册表,使用适当的值获取所有子键,然后使用XML配置替换这些值。

例如:

在XML文档中,存储以下值:

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

注册表项包含令牌值:

TOKEN = LifeCycleManagement

因此我希望powershell用“\ somelocation \ LifeCycleManagement *”替换“\ somelocation \ TOKEN *”

有什么想法吗?

目前我正在尝试以下代码:

$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。$元素没有返回任何结果。

1 个答案:

答案 0 :(得分:2)

在您的代码中,$line通常最初通常如下所示:

Token........: LifeCycleManagement。当您在:拆分行并获取第一部分时,您将获得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
}