如何在foreach循环中访问powershell中嵌套数组的属性?

olhwl3o2  于 2023-03-02  发布在  Shell
关注(0)|答案(1)|浏览(179)

我正在尝试编写一个脚本,检查是否一组注册表项被单独设置,然后根据它们的当前状态设置或修改它们。
我想要检查/设置的键混合包含字符串和DWORD
我想循环遍历一个数组,该数组包含要设置的键和值。
我尝试过作为哈希表/splatting,但是由于value参数,Get-ItemProperty的输入失败,所以我尝试了基本数组,但没有成功。
它们都在相同的注册表路径中,但我尝试执行类似以下操作:

$Path = "HKLM:\Software\path\to\keys"

$Properties = (
     ('key', value),
     ('key2', value2),
     ('key3', 'value3')
)

foreach ($item in $Properties){
     $exist = Get-ItemProperty -Path $Path -name $item[0]

     if ($exist) {
          Set-ItemProperty -Path $Path -Name $item[0] -Value $item[1]
     } else {
          New-ItemProperty -Path $Path -Name $item[0] -Value $item[1]
     }
}

但是无论我怎么尝试,我都无法检索内部数组的单个元素。
我意识到我可能会做这个长格式,只是一行一行地做,而不是试图迭代,但这绝对是一个更优雅的方式,如果我将来需要做类似的事情,这将是一个很好的模板。

2izufjch

2izufjch1#

天哪,没有什么能比在网上论坛上提出问题更能让你打破常规了。
我需要的是.GetValue()方法,而不是原始索引号......所以$Item.GetValue(0)是键名,$Item.GetValue(1)是值。
回答我自己的问题很傻,但希望它能帮助别人!

相关问题