Содержимое текстового файла перезаписывается предыдущим содержимым в Powershell - PullRequest
0 голосов
/ 01 июля 2018

Я пытаюсь экспортировать ключи реестра в текстовый файл. Но это только экспорт вывода последнего ключа реестра. Это перезаписывает предыдущие результаты. Может кто-нибудь сказать мне, где я иду не так? Заранее спасибо.

Function ExportRegistry ($logName)
{
    $RegExportPlaceHolder = "$env:windir\Temp" + "\$logName"
    if (!(Test-Path $RegExportPlaceHolder))
    {
        New-Item -path $RegExportPlaceHolder -type "file"
    }
    else
    {
        Add-Content $RegExportPlaceHolder $string
    }

    $CBSKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending"
    regedit /e /y $RegExportPlaceHolder $CBSKey

    $WUAUKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
    regedit /e /y $RegExportPlaceHolder $WUAUKey

    $UEVKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile"
    regedit /e /y $RegExportPlaceHolder $UEVKey
}

$RegExportLogName = "RegExport.txt"
$ExportReg = ExportRegistry $RegExportLogName

В моем случае я получаю только вывод $UEVKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\UpdateExeVolatile", а вывод предыдущих ключей перезаписывается.

1 Ответ

0 голосов
/ 01 июля 2018

regedit не добавляется в выходной файл. Если вы хотите экспортировать несколько ключей в один и тот же файл, вы должны сначала экспортировать их в отдельные файлы, а затем объединить эти файлы. Я также рекомендовал бы использовать reg.exe вместо regedit.exe для экспорта, потому что только первый даст вам правильный код выхода, который позволит вам определить, что-то пошло не так.

$CBSKey = 'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'
& reg export $CBSKey "${RegExportPlaceHolder}.1" /y

$WUAUKey = 'HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'
& reg export $WUAUKey "${RegExportPlaceHolder}.2" /y

$UEVKey = 'HKLM\SOFTWARE\Microsoft\Updates\UpdateExeVolatile'
& reg export $UEVKey "${RegExportPlaceHolder}.3" /y

'Windows Registry Editor Version 5.00' | Set-Content $RegExportPlaceHolder
Get-ChildItem "${RegExportPlaceHolder}.*" | ForEach-Object {
    Get-Content $_.FullName | Select-Object -Skip 1
} | Add-Content $RegExportPlaceHolder

Remove-Item "${RegExportPlaceHolder}.*" -Force
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...