Запись ошибок в CSV в Powershell - PullRequest
       1

Запись ошибок в CSV в Powershell

0 голосов
/ 20 сентября 2018
$csv = Get-Content c:\users\user\downloads\OutofContact.csv

foreach ($computer in $csv)
{
    try{
        $report = New-Object -TypeName PSObject -Property @{
                ComputerName = (Resolve-DnsName $computer).Name
                IPAddress = (Resolve-DnsName $computer).IPAddress
        }
        $report | select-object -Property ComputerName, IPAddress | Export-Csv -Path Results.csv -notype -append
    }catch{
        Write-Error "$computer not found" | Export-Csv -Path Results.csv -notype -append 
    }
}

Я использую приведенный выше код, чтобы проверить записи DNS для списка машин.Некоторые машины не существуют в DNS и выдают ошибку.Я хочу, чтобы эти машины записали ошибку в CSV, однако они просто отображаются как пустые строки.

Как я могу получить ошибки для записи в CSV?

1 Ответ

0 голосов
/ 21 сентября 2018

Я бы реорганизовал и оптимизировал повторяющиеся вызовы и добавил только один объект в конце ...

Примерно так:

#$csv = Get-Content c:\users\user\downloads\OutofContact.csv
# test
$csv = @('localhost', 'doesnotexist', 'localhost', 'doesnotexist')

$allReports = [System.Collections.ArrayList]::new()

foreach ($computer in $csv)
{
    $report = [pscustomobject]@{
                'ComputerName' = $computer
                'IPAddress' = 'none'
                'Status' = 'none'
                }

    try
    {
        # this can return multiple entries/ipaddresses
        $dns = Resolve-DnsName $computer -ErrorAction Stop | Select -First 1
        $report.ComputerName = $dns.Name
        $report.IPAddress = $dns.IPAddress
        $report.Status = 'ok'
    }
    catch
    {
        Write-Error "$computer not found"
    }
    finally
    {
      $null = $allReports.Add($report);
    }
}

# write to csv file once...
$allReports | Export-Csv -Path c:\temp\Results.csv -NoTypeInformation  #??? keep this? -Append

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...