原谅我违反了任何规则。我是一个全新的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
}