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

标签 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
}

我可以从Write-Output条目中看到正确的参数和文件名:
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是否具有等效的导入注册表文件?请帮忙!

最佳答案

你为什么使事情变得如此复杂? 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。

关于powershell - 导入注册表(.reg)文件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22608315/

相关文章:

java - 如何在 Eclipse 中编写 Java 代码来访问存储在 Domino 数据库中的数据?

windows - 使用 VB.NET 检查 Windows 注册表中是否存在某个键

c++ - 创建注册表项以将文件扩展名与 C++ 中的应用程序相关联

powershell - 将变量插入到 powershell 中的 powershell 字符串 block 中

powershell - 在Powershell中递归重命名文件

powershell - 管道foreach循环CSV PowerShell

java - 为什么我无法在 JCreator 中使用 JavaFX?

java - import 语句是否会增加类的大小

c# - 创建注册表项时访问被拒绝

powershell - PowerShell将大量检查复制到域计算机