Фильтрация содержимого в файле CSV в PowerShell

У меня есть следующий сценарий PowerShell, который я использую, чтобы определить, какие приложения у конечного пользователя на своем компьютере (в дополнение к приложениям по умолчанию, установленным на изображении).

В настоящее время сценарий собирает список приложений на старой машине и вставляет список приложений по умолчанию под ним (из DefaultApps.csv). Затем я открываю его в Excel, добавляю условное форматирование, чтобы найти дубликаты записей и скрыть / удалить эти строки. Затем я оставляю список того, что мне нужно установить на компьютер нового пользователя, который не содержит ничего, что установлено на изображении.

То, что я хотел бы сделать, – это изменить скрипт, чтобы PowerShell отфильтровывал BOTH записи любого найденного дубликата. Я нашел несколько мест в Интернете, в которых говорится, как удалить одну из записей, но это не поможет мне в этом случае. Я очень хочу, чтобы PowerShell вытащил список приложений с удаленного ПК и удалил любую запись, существующую в DefaultApps.csv.

Я не уверен, с чего начать, поскольку я не много сделал для редактирования CSV-файлов, кроме того, что есть в этом скрипте. Может ли кто-нибудь указать мне в правильном направлении, как это сделать? Если вы знаете, на какой CMdlet / switch я должен смотреть, или если у вас есть ссылка на страницу, которая объясняет это, это будет хорошим началом.

$PCListOld = Get-Content F:\PCList-Old.txt ForEach ($PC in $PCListOld) { $AppList = Get-WmiObject -Computer $PC Win32_Product | Sort-Object Name | Select-Object Name $AppList | Export-CSV C:\Scripts\AppLists\$PC.csv -NoTypeInformation Import-CSV C:\Scripts\AppLists\DefaultApps.csv | Export-CSV C:\Scripts\AppLists\$PC.csv -Append } 

Я не уверен, с чего начать, поскольку я не много сделал для редактирования CSV-файлов

Но вы не пытаетесь редактировать CSV-файл, soooo … не помещаете приложения по умолчанию в выходной файл, поэтому вам не придется отфильтровывать их. И не помещайте приложение в вывод, если оно находится в приложениях по умолчанию.

 $DefaultApps = Import-CSV C:\Scripts\AppLists\DefaultApps.csv $PCListOld = Get-Content F:\PCList-Old.txt ForEach ($PC in $PCListOld) { $AppList = Get-WmiObject -Computer $PC Win32_Product | Sort-Object Name | Select-Object Name $AppList | Where-Object {$_.Name -notin $DefaultApps.Name} | Export-CSV C:\Scripts\AppLists\$PC.csv -NoTypeInformation } 

Непроверенный, но грубо говоря.

PS. NB.

Interesting Posts

Создайте прямую последовательность чисел в зависимости от времени

Установка нескольких внешних диапазонов рабочей книги в качестве переменных для текущей рабочей книги. Диапазон.

Моя функция MInverse не будет работать в VBA

VBA On Error Exit Calling Function

Способ преодоления ограничения функции Excel Vlookup на 256 символов

Формула для соответствия / поиска, если часть строки в ячейке равна значению в заданном диапазоне и возвращает это значение

Python, степень конвертирования в партии от минут до десятичных градусов в .csv с тысячами записей

Объединение книг в новый файл

Разница в формуле SUMIFS между Libreoffice calc и Excel

Экспорт данных SQL-запроса в Excel

Создание Excel-поиска marco flexible для покрытия различных эталонных длин

ASP.NET читает несколько таблиц в том же листе Excel

BITXOR в Excel производит неожиданное значение

Ошибки синтаксиса Excel VBA и проблемы компиляции

Что использовать вместо устаревших CellRangeAddress.valueOf в ApachePOI

Давайте будем гением компьютера.