【问题标题】:Powershell - Append Variable to an Array using For EachPowershell - 使用 For Each 将变量附加到数组
【发布时间】:2018-09-27 18:15:45
【问题描述】:

我目前正在尝试将注册表项添加到多个注册表文件夹。但是因为您不能通过组策略使用通配符注册表项,所以我使用 ps1 脚本来添加这些项。基本上我想在这个位置添加一个十六进制值为 00 00 00 00 的 REG_Binary 键:HKCU:\SOFTWARE\Microsoft\Office\15.0\Outlook\Profiles\outlook profile\c02ebc5353d9cd11975200aa004ae40e 的名称。

我有使用一行 PS 在一个配置文件中添加此密钥的代码。这是:

$path = "HKCU:\SOFTWARE\Microsoft\Office\15.0\Outlook\Profiles\Name of Outlook Profile\c02ebc5353d9cd11975200aa004ae40e"

New-ItemProperty -Path $path -Name 00030354 -PropertyType Binary -Value ([byte[]](0x00,0x00,0x00,0x00)) -Force

这很好用,但是我需要对配置文件目录中的所有文件夹执行此操作。 我可以通过这个命令找出这个字符串中的所有配置文件名称:

$Profilelist = get-childItem "HKCU:\Software\Microsoft\Office\15.0\Outlook\Profiles\*" | select name

如何将值“\c02ebc5353d9cd11975200aa004ae40e”添加到此数组/列表的每一行?

添加后,我将能够使用每个命令来添加密钥。

如果有人知道更好的方法,我愿意接受其他想法!

提前致谢! :)

【问题讨论】:

    标签: arrays list powershell


    【解决方案1】:

    IMO 最简单的方法是使用计算属性:

    $Profilelist = get-childItem "HKCU:\Software\Microsoft\Office\15.0\Outlook\Profiles\*" | select @{n='extendedname'; e={'{0}\c02ebc5353d9cd11975200aa004ae40e' -f $_.Name.Replace('HKEY_CURRENT_USER\', 'HKCU:\'}}
    

    【讨论】:

    • 这将完美运行,但是因为 get child-item 将开始从 HKCU:\ 更改为 HKEY_CURRENT_USER\ 我收到错误消息 New-ItemProperty : Cannot find path 'C:\WINDOWS\system32\ HKEY_CURRENT_USER\Software ... 等等。关于如何更改字符串开头以便此命令起作用的任何想法?谢谢
    【解决方案2】:

    试试:

    Get-ChildItem -Path "HKCU:\SOFTWARE\Microsoft\Office\15.0\Outlook\Profiles" | ForEach-Object {
        $path = Join-Path $_.Name "c02ebc5353d9cd11975200aa004ae40e"
        #Create key if missing
        if(-not (Test-Path $path)) { New-Item -ItemType RegistryKey -Path $path }
        New-ItemProperty -Path $path -Name 00030354 -PropertyType Binary -Value ([byte[]](0x00,0x00,0x00,0x00)) -Force
    }
    

    【讨论】:

    • 这将完美运行,但是因为 get child-item 将开始从 HKCU:\ 更改为 HKEY_CURRENT_USER\ 我收到错误消息 New-ItemProperty : Cannot find path 'C:\WINDOWS\system32\ HKEY_CURRENT_USER\Software ... 等等。关于如何更改字符串开头以便此命令起作用的任何想法?谢谢
    • @user3290171 替换它。
    • 问题是你需要先创建密钥。现已更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多