我目前正在尝试访问注册表,使用适当的值获取所有子键,然后使用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。$元素没有返回任何结果。
答案 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
}