Перейти к содержимому
www.mytechnote.ru
Меню
  • Администрирование
    • Скрипты
  • Оборудование
    • Обзоры
    • Инструкции
  • Прочее
  • Русский
    • English
    • Русский
Меню

PowerShell — сравнение двух текстовых файлов [скрипт]

Привет, сегодня хочу показать очередной простенький скрипт на PowerShell который будет сравнивать 2 списка из двух текстовых файлов, и в случае, если какие-либо элементы из одного списка отсутствуют во втором файле, эти элементы будут записаны в еще один файл.

Сразу покажу вам скрипт, чтобы не томить.

$f1=get-content -Path .\file1.txt
$f2=get-content -Path .\file2.txt
foreach ($objf1 in $f1)
{
                $objf1 = $objf1.tostring().Trim()
                $objf1 = $objf1.Replace(" ","")
                $objf1 = $objf1.ToUpper()
                $found = $false
                foreach ($objf2 in $f2)
                {
                               $objf2=$objf2.Replace(" ", "")
                               $objf2=$objf2.Trim()
                               $objf2=$objf2.ToUpper()        
                               if ($objf1 -eq $objf2)
                               {                                            
                                               $found = $true                               
                               }                             
                }
                if ((!$found) -and ($objf1 -ne ""))
                {
                               $result += $objf1.tostring().trim() + "`r`n"
                }
}
set-content -path resultFile.txt -value $result
#echo $result

Расскажу предысторию, где этот скриптик мне понадобился. На самом деле всё банально просто. Обнаружилось, что на сервере антивируса, в списке компьютеров, где этот самый антивирус установлен на глаз – меньше компьютеров, чем в домене, при этом согласно политики антивирус должен быть установлен на всех компьютерах в домене.

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

Если кто не понял, каждая новая строчка в файлах – новый элемент для сравнения.

Разберем работу этого скрипта.

В первых двух строчках мы считываем наши файлы.

$f1=get-content -Path .\file1.txt
$f2=get-content -Path .\file2.txt

Далее запускаем цикл для первого файла, где для каждой строки убираем пробелы, если они есть и переводим все символы в заглавные. Присваиваем переменной, которая будет показывать найден ли элемент значение ложь.

foreach ($objf1 in $f1)
{
$objf1 = $objf1.tostring().Trim()
$objf1 = $objf1.Replace(" ","")
$objf1 = $objf1.ToUpper()
$found = $false
...
}

Внутри первого цикла запускаем еще один, где перебираем элементы из второго файла, так же каждую строчку отчищаем и переводим символы в заглавные и сравниваем каждый элемент из второго файла с текущим элементом из первого. Если элемент найден – присваиваем переменной значение истина.

foreach ($objf2 in $f2)
{
   $objf2=$objf2.Replace(" ", "")
   $objf2=$objf2.Trim()
   $objf2=$objf2.ToUpper()        
   if ($objf1 -eq $objf2)
   {                                            
      $found = $true                               
   }                             
}

После завершения второго цикла, если элемент не был найден, записываем его в строковую итоговою переменную, и повторяем процедуру для следующих элементов из первого файла.

if ((!$found) -and ($objf1 -ne ""))
{
   $result += $objf1.tostring().trim() + "`r`n"
}

В самом конце скрипта записываем нашу переменную с результатами в файл.

set-content -path resultFile.txt -value $result

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

Опубликовано в 10.04.201830.05.2024 от sanglyb

Навигация по записям

← VK разрешил сливать информацию, блокировка telegram, Топ 5 новостей за неделю [07.04]
Роскомнадзор оправдывается, спутники ломаются, топ 5 новостей недели [29.04] →

1 комментарий для “PowerShell — сравнение двух текстовых файлов [скрипт]”

  1. Аноним:
    18.03.2026 в 01:16

    Очень полезный скрипт. Спасибо.

    Ответить

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Подписывайтесь

Youtube
vk
telegram
github
twitter
rss
  • Форум
  • Об авторе
  • Поддержать автора

Популярные записи

Новые записи

  • Как расширить LVM раздел в Linux
  • Исправление ошибки SrsResources.dll после обновления SSRS для SCCM
  • Проблема при использовании библиотеки PassFiltEx на старых процессорах
  • Как удалить вложения из старых событий календаря в Exchange с помощью скрипта
  • Как скачать и установить Office 2024 LTSC

Архивы

  • 2026 (3)
  • 2025 (5)
  • 2024 (7)
  • 2023 (6)
  • 2022 (5)
  • 2021 (25)
  • 2020 (34)
  • 2019 (39)
  • 2018 (78)
  • 2017 (56)
  • 2016 (77)
  • 2015 (9)
© 2015-2026 www.mytechnote.ru
Использование материалов сайта возможно только с разрешения владельца или обязательна индексируемая, прямая, передающая вес ссылка на материал.