Скрипт для чтения и сравнения записей реестра - PullRequest
0 голосов
/ 06 июля 2019

Я очень новичок в PowerShell и застрял в этом вопросе.

  • Считайте записи реестра из обоих расположений, указанных в описании проекта.
    HKEY_CURRENT_USER / Программное обеспечение / Microsoft / Windows / CurrentVersion / Выполнить HKEY_LOCAL_MACHINE / Программное обеспечение / Microsoft / Windows / CurrentVersion / Выполнить
  • Сравните каждую запись со списком приемлемых записей.Список допустимых записей содержится в текстовом файле с именем «Acceptable_Reg.txt», который будет сопровождать сценарий при загрузке сценария.
  • Создание отчета в виде текстового файла, в котором перечислены все недопустимые записи реестра.Сохраните отчет, используя имя компьютера в качестве имени файла.
  • Передайте файл отчета по следующему адресу в интрасети: intranet.xyzcompany.com/bad_reg.aspx

Я пришелс этим пока ... но я не думаю, что это правильный путь.Я знаю, что мне, вероятно, понадобится использовать командлет сравнения объектов, но я не уверен, как его применить.

$path1 ="HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
$path2 = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run
$destination = "(FileName.txt)"
$results = Get-ItemProperty $path1 $path2

Любая помощь по этому вопросу будет принята с благодарностью, потому что мой профессор не в состоянии предоставить мне какую-либо помощь по фактическому сценарию.

1 Ответ

0 голосов
/ 07 июля 2019

Для сравнения, если вы экспортировали файлы reg, вы можете сделать:

$location1 = "C:\temp\location1";
$location2 = "C:\temp\location2";
$location3 = "C:\temp";

Compare-Object $(Get-Content "$location1\file1.reg") $(Get-Content "$location2\file2.reg") | 
    Where-Object { IsNotAccepted($_.InputObject) } | 
    Out-File "$location3\NotAcceptedEntries.txt" -Force

function IsNotAccepted($entry){
    $accepted = $false;
    # $name = $entry.Split('=')[0]
    # $value = $entry.Split('=')[1]

    # Put your logics here

    return -Not($accepted);
}

Обратите внимание, что $_.InputObject представляет запись, например,

"C: \ ProgramФайлы (x86) \ 7-Zip \ 7z.exe.FriendlyAppName "=" 7-Zip Console 2 "

Вы также можете узнать, в каком файле это было, отметив $_.SideIndicator.Если он возвращает =>, это означает, что правильный файл (file2.reg) имеет эту разницу.И наоборот <= означает, что разница была найдена в левом файле (file1.reg).

...