我目前正在尝试将注册表项添加到多个注册表文件夹中。但是,因为您不能通过组策略使用通配符注册表项,而是使用ps1脚本添加这些键。基本上我想在这个位置添加一个十六进制值为00 00 00 00的REG_Binary键:HKCU:\ SOFTWARE \ Microsoft \ Office \ 15.0 \ Outlook \ Profiles \ outlook of 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
这非常有效,但我需要在profiles目录中的所有文件夹上执行此操作。 我可以通过以下命令找到此字符串中的所有配置文件名称:
$Profilelist = get-childItem "HKCU:\Software\Microsoft\Office\15.0\Outlook\Profiles\*" | select name
如何添加值" \ c02ebc5353d9cd11975200aa004ae40e"到这个数组/列表的每一行?
添加后,我将能够使用a为每个命令添加密钥。
如果有人知道更好的方式我会接受其他想法!
提前致谢! :)
答案 0 :(得分: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:\'}}
答案 1 :(得分:1)
尝试:
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
}