如何在对象中保存.csv路径?

时间:2018-10-12 09:51:33

标签: powershell

我有一个foreach循环,其工作方式如下:
我从XML加载对象,因此由城市和ICT负责人的电子邮件组成的对象,然后使用电子邮件设置将来的导出路径。我还设置了$CurrentCity以获取我们正在骑自行车的城市。 然后,我进行查询并检入完整的报告,看看是否有从我们骑自行车的物体上取走的城市,如果有,我用相应的路径进行导出(就像我之前说过的那样,包括相应的电子邮件地址)。 / p>

问题是我接下来要发送这些邮件,但我需要收集对象中附件的路径和收件人的电子邮件。 我怎样才能做到这一点?我以为我可以创建一个简单的对象AttachmentPath和Email,然后对其进行foreach,以获取每次的值并发送单附件的邮件。

$LCL_Setting.Local_Config.LF_param.IctHead.city | foreach {
    $tempfile = $myDir + $dir_out + $fileOut + $LogDate +'_'+$_.ICT_mail +'.csv'
    $CurrentCity = $_.Branch

    if ($result | where {$_.City -eq "$($CurrentCity)"}) {
        $result |
            where {$_.City -eq "$($CurrentCity)"} |
            Export-Csv $tempfile -NoTypeInformation -Append
    }
}

1 个答案:

答案 0 :(得分:0)

您可以使用以下电子邮件地址和输出文件路径来构建自定义对象:

$temp_files = $LCL_Setting.Local_Config.LF_param.IctHead.city | foreach {
    ...
    if ($result | where {$_.City -eq "$($CurrentCity)"}) {
        ...
        New-Object -Type PSObject -Property @{
            'Mail' = $_.ICT_mail
            'File' = $tempfile
        }
    }
}

但是,使用哈希表而不是自定义对象列表可能是一种更好的方法,因为它使您可以通过电子邮件地址查找文件路径。

$temp_files = @{}
$LCL_Setting.Local_Config.LF_param.IctHead.city | foreach {
    ...
    if ($result | where {$_.City -eq "$($CurrentCity)"}) {
        ...
        $temp_files[$_.ICT_mail] = $tempfile
    }
}