Лучший способ импортировать csv-файл пользователей и менеджеров, а затем отправить менеджеру по электронной почте список их пользователей. - PullRequest
1 голос
/ 18 июня 2020

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

Я знаю, как импортировать файл csv. Я получил базовый c код отправки электронной почты. Я совершенно не понимаю, как правильно связать пользователей и менеджеров друг с другом.

Например, мой 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"

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Я не совсем уверен, что понимаю, какой результат вы хотите, но вот вам предложение. Если у вас есть файл csv с именем worker.csv, он должен отсортировать записи по имени менеджера: содержимое worker.csv:

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

в командной строке Powershell введите:

$ manager = "boss1", "boss2"

(затем введите ввод), затем введите:

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

0 голосов
/ 18 июня 2020
$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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...