Powershell - извлечение в CSV из цикла - PullRequest
1 голос
/ 15 марта 2020

когда я пытался получить результаты этого кода

$Output = @()
foreach($emailproxy in $emailproxies)
{
if($emailproxy.Mail -like "*com" -or $emailproxy.Mail -like "*org"){ Write-Host $emailproxy.Mail} 
 $Output = New-Object -TypeName PSObject -Property @{
        Mail = $emailproxy.Mail
    } | Select-Object Mail
}

$Output | Export-Csv C:\TempDownloads\results.csv

Я получаю только 1 результат ... почему это так?

Ответы [ 2 ]

2 голосов
/ 15 марта 2020

Для каждой итерации в l oop вы присваиваете (перезаписываете) значение непосредственно переменной $Output вместо добавления значения в массив.

Внутри для l oop, вам нужно заменить $Output = на $Output +=.

  • $Output = <new value> -> Присвоить <new value> переменной $ Output, существующее значение $Output будет перезаписано и потеряно .

  • $Output += <new value> эквивалентно $Output = $Output + <new value>, где <new value> и текущее значение $Output сначала объединяются, а затем присваиваются $Output.

0 голосов
/ 15 марта 2020

Это потому, что вы каждый раз перезаписываете переменную $ output. Вам необходимо добавить свойства к psobject, используя add-member

Output = New-Object -TypeName Psobject 
foreach($emailproxy in $emailproxies) { if($emailproxy.Mail -like "*com" -or $emailproxy.Mail -like "*org"){ Write-Host $emailproxy.Mail} 
$Output | Add-Member -MemberType NoteProperty -Name "Mail" -Value $_.mail
}
 $Output | Export-Csv "filepath"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...