2013-08-22 6 views
0

Я использую следующий код, чтобы получить список имен компьютеров, где они были в последний раз изменены 181 день назад. У меня есть CSV-файл с 2 столбцами (ComputerName, UserName). Есть ли способ, которым я могу сопоставить вывод из кода ниже с столбцом имени пользователя в файле csv и отображать выходные/совпадения?Powershell для сравнения вывода с CSV-файлом?

$Days = (Get-Date).AddDays(-181) 

Get-ADComputer -Property Name,lastLogonDate -Filter {lastLogonDate -lt $Days} -Server DomainController -Searchbase "OU=US,DC=contoso,DC=net" | FT Name,lastLogonDate 

ответ

1

Изменение ... | FT Name,lastLogonDate в ... | select Name,lastLogonDate. Вы все равно можете передать результат в ft, чтобы отформатировать его как таблицу, но выделение выделения из презентации упростит добавление дополнительных фильтров.

Для отображения только те компьютеры, которые имеют матчи в вашем CSV вы можете сделать следующее:

$computers = Import-Csv 'your.csv' | % { $_.ComputerName } 

Get-ADComputer -Property Name,lastLogonDate ... | select Name,lastLogonDate | 
    ? { $computers -contains $_.Name } | ft 

Чтобы включить имя пользователя из CSV с результатом вы могли бы сделать что-то вроде этого:

$computers = @{} 
Import-Csv 'your.csv' | % { $computers[$_.ComputerName] = $_.UserName } 

Get-ADComputer -Property Name,lastLogonDate ... | 
    ? { $computers.Keys -contains $_.Name } | 
    select Name,lastLogonDate,@{n='Username';e={$computers[$_.Name]}} | ft 
+0

Спасибо, код работает, но как показать столбец имени пользователя из csv рядом с именем computername? Я не уверен, как это сделать, имя, имя пользователя? – user1342164

+0

Что делает эта линия? % {$ _. Computer_Name} – user1342164

+0

Это цикл «ForEach-Object», который создает список (массив) имен компьютеров. В измененной версии вместо этого используется хэш-таблица, а имена компьютеров в качестве ключей и имена пользователей - как значения. –

Смежные вопросы