Спрашивающий
Powershell Сравнение 2х CSV файлов

Вопрос
-
Доброго времени суток!
Буду рад помощиЕсть 2 CSV файла
file1.csv
User;PCname
Bob;PC1
Anna;PC2file2.csv
User;PCname
Anna;PC2Как видно здесь совпадают Anna;PC2
Нужно сравнить 2 файла и только если есть совпадения, то записать User в Managed by (Set-ADComputer-ManagedBy)в AD.
Небольшой скрипт ниже работает,
$file1 = Import-Csv 'C:\Users\adm\Desktop\File1.csv' -Delimiter ";"
$file2 = Import-Csv 'C:\Users\adm\Desktop\File2.csv' -Delimiter ";"
Compare-Object $file1 $file2 -property PCname -IncludeEqual
он выводит SideIndicator у PCname в значение ==, но не ясно как далее создать массив и записать данные в AD.
- Изменено It-Kirill 12 февраля 2021 г. 9:36
12 февраля 2021 г. 9:34
Все ответы
-
$file1 = Import-Csv 'C:\File1.csv' -Delimiter ";" Import-Csv 'C:\File2.csv' -Delimiter ";" | where { $_.pcname -in $file1.pcname } | foreach { $_.user $_.pcname }
The opinion expressed by me is not an official position of Microsoft
13 февраля 2021 г. 6:54Модератор -
Спасибо за ответ!
Задача немного изменилась, а я уже написал большую часть кода.Смысл: есть 2 CSV файла, в них могут быть дубли. Дубли пишем в отдельный файл. Затем берем из 2х файлов оригиналы и ищем их в AD, если находим, то изменяем параметр ManagedBy.
Что не работает:
1. Нет чтения в Managed = Getadcomputer. Подозреваю, что проблема в переменной $Originals.ARM
2. Не выводит список тех машин, которых нет в AD. Muclonotinad имевю ввиду.
$file1 = Import-Csv 'C:\temp\mer\File1.csv' -Delimiter ";" $file2 = Import-Csv 'C:\temp\mer\File2.csv' -Delimiter ";" $propertyToCompare = 'ARM' $myCol = @(); $originals = @(); $duplicates = Compare-Object -ReferenceObject $file1 -DifferenceObject $file2 -Property $propertyToCompare -PassThru -includeequal -excludedifferent $duplicates | export-csv ‘C:\temp\mer\povtor.csv’ -notypeinformation $originals = Compare-Object -ReferenceObject $file1 -DifferenceObject $file2 -Property $propertyToCompare -PassThru $workstations = Get-ADComputer -SearchBase 'OU=tstARM Computers,OU=ARMComputers,OU=INT,DC=ddd,DC=ru' ` -Filter * ` -Properties Description, managedby | Select-Object name, ManagedBy ForEach ($original in $originals) { If ($original.ARM -in $workstations.name) { Set-ADComputer -Identity $original.ARM -ManagedBy "CN=alauser,OU=Users,OU=INT,DC=ddd,DC=ru" $MyObject = New-Object PSObject -Property @{ Name = $original.ARM Managed = Get-ADComputer -SearchBase 'OU=tstARM Computers,OU=ARMComputers,OU=INT,DC=ddd,DC=ru' ` -Filter "Name -eq '$original.ARM'" ` -Properties managedby | Select-Object ManagedBy -ExpandProperty managedby } $mycol += $MyObject } } if ($original.ARM -notin $workstations.name) { $MyObjectnotinad = New-Object PSObject -Property @{ Name = $original.ARM } $mycolnotinad += $MyObjectnotinad } $myCol $mycolnotinad
- Изменено It-Kirill 14 февраля 2021 г. 11:52
14 февраля 2021 г. 11:49