PowerShell:如何遍历名为“SQLArg1”,“SQLArg2”等的注册表值?

时间:2011-12-11 17:17:34

标签: powershell registry

我正在开发一个PowerShell函数,它应该检查注册表中名为“SQLArg4”和“SQLArg5”(或其他两个数字)的两个值是否设置为某个值内容,如果没有则设置它们。

问题是我无法枚举值来遍历它们以比较所有值,然后添加我的两个值内容(如果它们不存在)。

我尝试用“SQLArg”和$ i索引创建一个字符串,但PowerShell不允许我将该字符串用作变量的字段。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

听起来你只需要使用一个注册表项(没有递归)。试试这个代码。它将获得以“SQLArgs”开头的$ key下的所有值,并将它们存储在$ values中。它循环遍历数字序列并测试是否存在名为SQLArgs#的键值。当它找到一个时,它将设置键值数据。

$key = "HKCU:\Andy"

$values = Get-ItemProperty -Path $key -Name SQLArg*

1..20 | % {
    if ($values."SQLArg$_" -ne $null) {
        Set-ItemProperty -Path $key -Name "SQLArg$_" -Value "Powershell Rocks"
    }
}