2017-01-10 2 views
0

Я пытаюсь написать сценарий Powershell, который будет импортировать список имен компьютеров из файла CSV и сравнить его со всеми именами компьютеров в AD. Мне нужно, чтобы вывести список имен из файла CSV, которого нет в AD.Проверьте имена компьютеров компьютера в CSV-файле

Я играл с этими командами, но они не делают именно то, что я хочу.

$import = Import-Csv -Path C:\Users\username\Desktop\test.csv 
$AD-Names = Get-ADComputer -filter * | Select -Expand Name 
Compare-Object $import $AD-Names 

Это, кажется, дает мне список всех, отличающихся от обеих переменных, которые являются чрезвычайно длинным списком. Мне просто нужно знать, какие имена компьютеров в CSV-файле не находятся в AD.

ответ

0

Просто сравните имена из CSV со списком имен из AD (я буду считать, что заголовок столбца CSV является Name):

$ADNames = Get-ADComputer -Filter * | Select-Object -Expand Name 
Import-Csv 'C:\path\to\input.csv' | 
    Where-Object { $ADNames -notcontains $_.Name } | 
    Export-Csv 'C:\path\to\not_in_AD.csv' -NoType 

Side Примечание: $AD-Names не является допустимым именем переменной. Измените дефис на символ подчеркивания или полностью удалите его или поместите имя переменной в фигурные скобки (${AD-Names}).

+0

Это было именно то, что мне было нужно. Благодаря! – rsakai2

0

Во-первых, зачем нужен файл csv, если есть только имена компьютеров? Файлы CSV обычно используются для хранения таблицы в простом текстовом файле.

Если CSV содержит только имена компьютеров, и вы только хотите, чтобы проверить имена компьютеров, это может работать для вас:

$OutputComputers = @(); 
$InputComputers = Import-Csv input.csv -Header ComputerName; 
$AdComputers = Get-ADComputer -Filter 'Name -like "*"'; 


$InputComputers | ForEach-Object {$i = 0} { 
    if ($_.ComputerName -notin $AdComputers.Name) { 
     $OutputComputers += New-Object PsObject -property @{ 
      'ComputerName' = $_.ComputerName 
     } 
    } 
} 

$OutputComputers | Export-Csv output.csv -Delimiter ";" -Encoding UTF8 -Force -NoTypeInformation 

Надеется, что это помогает.