Помощь с Export-Csv в PowerShell

Я использую сценарий ниже, чтобы сослаться на текстовый файл со списком имен компьютеров, чтобы узнать, на какой ОС и версии ОС работает каждая машина. Я могу заставить его отображаться в PowerShell, но все мои попытки экспортировать его в файл CSV не увенчались успехом. Я использовал другие статьи здесь, которые рекомендуют использовать Write-output и Export-csv, но все, что я получаю, это либо ошибка (в зависимости от размещения), либо я получаю файл CSV, который показывает длину и количество символов. Я не против поработать, но мне кажется, что я не понимаю, куда бы я поместил трубу и чтобы результаты попали в файл CSV.

$Computers = Import-Csv -Path "c:\Scripts\computers.txt" -Header "Name"
foreach ($Computer in $Computers) {
    try {
        Get-ADComputer -Identity $Computer.Name -Properties Name, operatingSystem, operatingSystemVersion |
            Select Name, operatingSystem, operatingSystemVersion
    } catch {
        $Computer.Name + " not in AD" |
            Export-Csv -Path .\computers-results.csv -NoTypeInformation
    }
}

person b_ease_zee    schedule 13.03.2019    source источник


Ответы (1)


Попробуй это:

$Computers = Import-CSV -Path "c:\Scripts\computers.txt" -Header "Name"

$Result = ForEach ($Computer In $Computers)
{
  Try
  {
      Get-ADComputer -Identity $Computer.Name -Properties Name, operatingSystem, operatingSystemVersion | Select Name, operatingSystem, operatingSystemVersion
  }
  Catch
  {
      Write-Warning $Computer.Name + " not in AD"
  }
}

$Result | Export-CSV .\computers-results.csv -NoTypeInformation

Это работает путем сопоставления результата цикла ForEach с переменной $Result, что происходит потому, что результат строки Get-ADComputer возвращается в конвейер.

После завершения циклов $Result представляет собой набор объектов, которые мы затем можем отправить в Export-CSV для преобразования в файл CSV.

Обратите внимание, что я также изменил часть Catch, чтобы использовать Write-Warning, поэтому вы будете видеть в своей консоли только те машины, к которым нет доступа, они вообще не будут отображаться в вашем выходном файле.

person Mark Wragg    schedule 13.03.2019
comment
Марк, так и было. Спасибо, что нашли время, чтобы сломать объяснение. Я определенно добавляю все, что вы сказали, в свои заметки, чтобы я мог лучше выполнять свою должную осмотрительность. Это был упрощенный ответ, и он полностью логичен. Спасибо еще раз. - person b_ease_zee; 19.03.2019
comment
Всегда пожалуйста! - person Mark Wragg; 19.03.2019