导入注册表(.reg)文件失败

时间:2014-03-24 11:38:13

标签: powershell import registry windows-server-2012

我在Windows Server 2012上导入.reg文件时遇到问题。该脚本适用于Server 2008,在PowerShell提示符下输入时有效,并且在"双击"在Server 2012实例上。

该脚本解压缩包含.reg文件的文件,然后将它们导入注册表。

Write-Output "Unzipping AUX Package"
Unzip-File -File "$DOWNLOAD_DIR\$S3_AUX_PACKAGE" -Destination $destinationFolder
Write-Output "Done unzipping AUX Package"

# Import registry files in the AUX archive package
$registryFiles = Get-ChildItem $destinationFolder | where {$_.extension -eq ".reg"}
$registryFiles = $registryfiles | % {$_.Name}

foreach ($regfile in $registryfiles) { 
        move "$destinationFolder\$regfile" "$DOWNLOAD_DIR"
        $cmd = "regedit /s `"$DOWNLOAD_DIR\$regfile`" " 
        Write-Output "$cmd"
        invoke-expression $cmd
}

我可以看到写输出条目中出现正确的参数和文件名:

Unzipping AUX Package
09:30:08: Done unzipping AUX Package
09:30:09: regedit /s "c:\\downloads\ControlSet001-110-64.reg"
09:30:11: regedit /s "c:\\downloads\CurrentControlSet110-64.reg"
09:30:11: regedit /s "c:\\downloads\HKCU110-64.reg"
09:30:11: regedit /s "c:\\downloads\HKLM110-64.reg"

但它似乎只是导入前两个.reg文件 - 两个ControlSet文件。另外两个" HKCU"和" HKLM"根本不进口。

这些是这些REG文件尝试写入的路径:

ControlSet001-110-64.reg - HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\AdminService11.0

CurrentControlSet110-64.reg - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\AdminService11.0

HKCU110-64.reg - HKEY_CURRENT_USER\SOFTWARE\PSC

HKLM110-64.reg - HKEY_LOCAL_MACHINE\SOFTWARE\PSC

在另一个脚本中,我能够导入REG文件以写入HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\这很奇怪,因为我无法写入它的父节点SOFTWARE

我使用regedit /sreg import获得相同的结果。

我该如何调查此问题?有什么指针吗?我可以调试单个PowerShell行 - 可能是详细输出吗? PowerShell是否具有导入注册表文件的等效项?请帮忙!

1 个答案:

答案 0 :(得分:3)

你为什么要这么复杂? Get-ChildItem cmdlet返回FileInfo个对象,这些对象的属性FullName具有项目的完整路径,在本例中为.reg个文件。

这应该有效:

Write-Output "Unzipping AUX Package"
Unzip-File -File "$DOWNLOAD_DIR\$S3_AUX_PACKAGE" -Destination $destinationFolder
Write-Output "Done unzipping AUX Package"

Get-ChildItem $destinationFolder | ? { $_.Extension -eq '.reg' } | % {
  & reg import $_.FullName
}

请注意,您需要以管理员身份运行此操作"能够写信给HKLM。