导入用户和管理员的 csv 文件,然后通过电子邮件向经理发送用户列表的最佳方式



原谅我违反了任何规则。我是一个全新的StackOverflow用户,也是一个Powershell菜鸟。我正在处理一个工作项目,其中我导入了一个包含用户及其各自经理列表的 CSV 文件。然后,我需要创建一封电子邮件,其中包含每个相应经理的用户表。

我知道如何导入 csv 文件。我已经创建了一个基本的电子邮件发送代码。我完全不知道如何正确地让用户和经理相互关联。

例如,我的csv格式为如下标题:

First Name  Last Name  Username   Manager 
Bob         Dole       BDole      Jsmith 
John        Doe        JDoe       Anoob 
Jane        Doe        JDoe1      Jsmith 
etc.

有人可以指出我正确的方向吗?我尝试使用哈希表和数组,但没有成功。这可能是由于我的菜鸟身份。

如果还有我应该添加的更多信息,请告诉我。由于没有任何效果,我目前还没有编写任何真正的代码,所以请原谅帖子中非常有限的代码。

$users = import-csv "Path goes here"
"My code for associating the users and managers would go here"
"Email code goes here"
$users = Import-Csv .test.csv -Delimiter ";"
$cred = Get-Credential # enter the credentials for your email account

您将从哪里发送邮件

$users | Group-Object -Property Manager | % {
$managername = $_.name
write-host $managername
$body = $_.group | format-table | ConvertTo-Html
write-host $body
Send-MailMessage -to "$managername@some.com" -Body $body -From "yourmail" -SmtpServer "yoursmtpserver" -Port "your smtp port" -Subject "mailsubject" -Credential $cred -BodyAsHtml
}

如果您不想每次都输入邮件凭据,可以按如下方式保存它们。

get-credential | export-clixml -path "somepath"

稍后,您可以从操作系统中读取凭据:

$cred = import-clixml -path "somepath"

我不确定我是否理解您想要什么样的输出,但这里有一个建议。如果您有一个名为 workers.csv 的 csv 文件,则应按经理名称对条目进行排序: 工人内容.csv:

first   last    username    manager
john,   doe,     jdoe,        boss1
jan,    doe,     jjdoe,       boss2
jim,    ddi,     jddi,        boss2
didi,   goo,     didigoo,     boss1  

在Powershell提示符下,键入:

$managers = "老板1","老板2"

(然后键入回车( 然后键入:

foreach ($item in $managers) {         
cat ./workers.csv | Select-String -Pattern "$item"
| out-file -append workers.csv
}

最新更新