【问题标题】:How to run the .reg file using PowerShell?如何使用 PowerShell 运行 .reg 文件?
【发布时间】:2018-09-15 12:42:54
【问题描述】:

我想使用 PowerShell 脚本运行 .reg 文件(注册表文件),但我无法运行它。当我手动运行它时,它会在注册表中创建相应的节点,但我希望它使用 powershell 脚本执行。 以下是我尝试使用但没有结果的代码 -

$PathofRegFile="c:\file.reg"
regedit /s $PathofRegFile

我尝试的另一个代码是这个 -

Start-Process -filepath "C:\windows\regedit.exe" -argumentlist "/s c:\file.reg"

请帮忙..!

以下是我的 .reg 文件的内容

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI]

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI\STEP]
@=""

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI\STEP\Platform]
"VERSION"="8.2.6.0"

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI\STEP\Platform\AppService]
"MONITORINTERVAL"=dword:00000005
"MONITORAPPS"="STEP Audit"

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI\STEP\Platform\Audit]
"TRACEON"=dword:00000000
"TRACEDIR"="Specifies the directory to dump trace files if TRACEON is set to 1"

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI\STEP\Platform\Common]
"SSMITRACEFILEX"="C:\\Program Files\\SePI\\STEP\\LogFiles\\SSMITraceFile.txt"
"SSMILOGERRORSLOCALLY"="Yes"
"SSMIDoNotSendToAudit"="FALSE"
"ResourceFile"="C:\\Program Files\\SePI\\STEP\\Programs\\"
"REPORTALLEXCEPTIONS"="Yes"
"KSPath"="C:\\Program Files\\SePI\\STEP\\KeyStore\\"
"KEY"="10069356713705F858B56A9E850DD8CB7D"
"intelliSUITEnode"="WebApp"
"InstallationDir"="C:\\Program Files\\SePI\\STEP\\"
"IMSFirstRun"=dword:00000001
"CONFIGPATH"="C:\\Program Files\\SePI\\STEP\\Configuration Files\\"
"COM_VERBOSEGLOBALCACHE"="False"
"COM_UserProfileCacheExpirationInSecs"="30"
"COM_SSMISenderUtilCacheExpirationInSecs"="120"
"COM_REPORTIGNOREDEXCEPTIONSASWARNINGS"="True"
"COM_LOCALUTILSCACHEEXPIRATIONINSECS"="600"
"COM_DEFAULTPROPERTYCACHEEXPIRATIONINSECS"="600"
"ProductName"="Ron"

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI\STEP\Platform\ESI]

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI\STEP\Platform\ESI\ITranQueryPrep]
"PATH"="C:\\Program Files\\SePI\\STEP\\QueryTemplates"

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI\STEP\Platform\ITran]
"MAXROWSTORETURN"=dword:000003e8
"WRITERPSWD"="PASSWORD"
"WRITER"="ITRAN_WRITER"
"SERVER"="SQL SERVER"
"READERPSWD"="PASSWORD"
"READER"="ITRAN_READER"
"DBNAME"="DATABASENAME"

[HKEY_LOCAL_MACHINE\SOFTWARE\SePI\STEP\Platform\ReportingSvc]
"STATUSINTERVAL"="5"
"POLLINTERVAL"="2"
"MONITORINTERVAL"="5"
"MAXWORKERTHREADS"="5"
"CONFIGFILE"="C:\\Program Files\\SePI\\STEP\\Configuration Files\\"

【问题讨论】:

  • 你有错误吗?
  • 不,我没有收到任何错误
  • $S=Start-Process -filepath "C:\windows\regedit.exe" -argumentlist "/s "/sc:\file.reg" -PassThru -Wait $S.ExitCode -eq 0 这就是我使用的方式,它在我的命令 shell 上返回 True。这是我应该使用 exitcode 的方式吗?
  • @SRP 如果regedit以0退出,则表示合并成功。
  • 这是 x64 位机器吗?也许 reg 被加载到 HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node 中?

标签: powershell automation powershell-3.0 powershell-4.0 powershell-5.0


【解决方案1】:

用reg.exe代替regedit.exe怎么样

Get-Command reg

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     reg.exe                                            10.0.16... C:\Windows\system32\reg.exe

这对我很有效:

reg import .\test.reg

【讨论】:

  • .\ 指的是当前文件夹,在您的情况下,您应该使用绝对路径,因此命令将是“reg import C:\file.reg”
  • @ Aurimas N,我尝试以这种方式使用它- reg import C:\Demo.reg 它工作并在注册表中创建了节点,但在命令外壳上它以红色给出了这条消息 - reg : 操作成功完成。在 C:\Suraj\AutoServerRoleScript.ps1:77 char:1 + reg 导入 C:\Demo.reg + ~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified : (操作成功完成。:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError
  • RED 消息好像只在 ISE 出现,你可以试试start-process reg -ArgumentList "import C:\Demo.reg"
【解决方案2】:

我用

Invoke-Command {reg import \\server\share\test.reg *>&1 | Out-Null}

最后一部分

*>&1 | Out-Null

通过管道将输出设置为 null,因此控制台看不到它。我认为这不是必需的,但这让我很恼火。

【讨论】:

    【解决方案3】:

    您可能试图以不足的权限运行它。这个 sn-p 应该可以工作:

    $startprocessParams = @{
        FilePath     = "$Env:SystemRoot\REGEDIT.exe"
        ArgumentList = '/s', 'C:\file.reg'
        Verb         = 'RunAs'
        PassThru     = $true
        Wait         = $true
    }
    $proc = Start-Process @startprocessParams
    
    if ($proc.ExitCode -eq 0) {
        'Success!'
    }
    else {
        "Fail! Exit code: $($Proc.ExitCode)"
    }
    
    Pause
    

    【讨论】:

    • 我尝试在命令外壳上使用此代码,它显示成功!但在注册表中仍未创建节点。
    • @SRP 然后听起来问题出在您的注册表文件上。在您的问题中发布内容。
    • 我已经把上面问题中的reg文件的内容贴出来了,请看一下。
    • Start-Process 在与reg.exe 一起使用时返回$null,因此没有要检查的ExitCode 属性
    【解决方案4】:

    你可以用这个:

    Start-Process -filepath "$env:windir\regedit.exe" -Argumentlist @("/s", "`"C:\file.reg`"")
    

    【讨论】:

    • 到目前为止,这对我来说效果最好。
    【解决方案5】:

    这是我用的

    regedit /s "c:\file.reg"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-01
      • 2023-03-14
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      相关资源
      最近更新 更多