Welcome › Forums › General PowerShell Q&A › A script that sends emails via the OUTLOOK SMTP server
- This topic has 1 reply, 2 voices, and was last updated 10 months, 3 weeks ago by
Participant.
-
AuthorPosts
-
-
March 5, 2020 at 4:50 pm #208500
I got a task to do a script in PowerShell where I need to get out of AD a list of names that begin with the letter “A” with full name, username and creation date criteria. Then export the list with custom headers and export it to a CSV file Then import the CSV file again and output anyone who works over two years (full name) So far I have done the script correctly in my opinion because it works. Now I’m pretty stuck I need to make every user on the list who went out first to make a folder (no matter where) and give full permissions to the folder – I did something but it seems to be incorrect. Then I need to send an email with a table that states the full name and folder path and that the sender will be [email protected].
The code I wrote:
PowerShell12345678[crayon-600e3a96a9639528026055 inline="true" ] <span class="typ">Get</span><span class="pun">-</span><span class="typ">ADUser</span> <span class="pun">-</span><span class="pln">filter </span><span class="pun">*</span> <span class="pun">-</span><span class="typ">SearchBase</span> <span class="str">"OU=meitavdash,OU=Users,DC=meitav,DC=co,DC=il"</span><span class="typ">Get</span><span class="pun">-</span><span class="typ">ADUser</span> <span class="pun">-</span><span class="typ">Properties</span><span class="pln"> whenCreated </span><span class="pun">-</span><span class="typ">Filter</span> <span class="pun">{</span><span class="pln">samaccountname </span><span class="pun">-</span><span class="pln">like </span><span class="str">'A*'</span><span class="pun">}</span> <span class="pun">|</span><span class="typ">Format</span><span class="pun">-</span><span class="typ">Table</span><span class="pln"> name</span><span class="pun">,</span><span class="typ">SamAccountName</span><span class="pun">,</span><span class="pln">whenCreated</span><span class="typ">Get</span><span class="pun">-</span><span class="typ">ADUser</span> <span class="pun">-</span><span class="typ">Properties</span><span class="pln"> whenCreated </span><span class="pun">-</span><span class="typ">Filter</span> <span class="pun">{</span><span class="pln">samaccountname </span><span class="pun">-</span><span class="pln">like </span><span class="str">'A*'</span><span class="pun">}</span> <span class="pun">|</span> <span class="typ">Select</span><span class="pun">-</span><span class="typ">Object</span> <span class="pun">@{</span><span class="pln">n</span><span class="pun">=</span><span class="str">'FullName'</span><span class="pun">;</span><span class="pln">e</span><span class="pun">={</span><span class="pln">$_</span><span class="pun">.</span><span class="typ">Name</span><span class="pun">}},@{</span><span class="pln">n</span><span class="pun">=</span><span class="str">'UserName'</span><span class="pun">;</span><span class="pln">e</span><span class="pun">={</span><span class="pln">$_</span><span class="pun">.</span><span class="typ">SamaccountName</span><span class="pun">}},@{</span><span class="pln">n</span><span class="pun">=</span><span class="str">'CreateDate'</span><span class="pun">;</span><span class="pln">e</span><span class="pun">={</span><span class="pln">$_</span><span class="pun">.</span><span class="typ">WhenCreated</span><span class="pun">}}</span> <span class="pun">|</span><span class="pln"> export</span><span class="pun">-</span><span class="pln">csv </span><span class="pun">-</span><span class="pln">path c</span><span class="pun">:</span><span class="pln">\userexport</span><span class="pun">.</span><span class="pln">csv</span><span class="typ">Get</span><span class="pun">-</span><span class="typ">ADUser</span> <span class="pun">-</span><span class="typ">Properties</span><span class="pln"> whenCreated </span><span class="pun">-</span><span class="typ">Filter</span> <span class="pun">{</span><span class="pln">samaccountname </span><span class="pun">-</span><span class="pln">like </span><span class="str">'A*'</span><span class="pun">}</span> <span class="pun">|</span><span class="pln"> where </span><span class="pun">{</span><span class="pln">$_</span><span class="pun">.</span><span class="pln">whencreated </span><span class="pun">-</span><span class="pln">le </span><span class="pun">(</span><span class="typ">Get</span><span class="pun">-</span><span class="typ">Date</span><span class="pun">).</span><span class="typ">AddYears</span><span class="pun">(-</span><span class="lit">2</span><span class="pun">)}|</span><span class="typ">Select</span><span class="pun">-</span><span class="typ">Object</span> <span class="pun">@{</span><span class="pln">n</span><span class="pun">=</span><span class="str">'FullName'</span><span class="pun">;</span><span class="pln">e</span><span class="pun">={</span><span class="pln">$_</span><span class="pun">.</span><span class="typ">Name</span><span class="pun">}}</span><span class="pln">$sp</span><span class="pun">=</span><span class="pln">$</span><span class="pun">((</span><span class="typ">Get</span><span class="pun">-</span><span class="typ">Date</span><span class="pun">).</span><span class="typ">AddDays</span><span class="pun">(-</span><span class="lit">365</span><span class="pun">*</span><span class="lit">2</span><span class="pun">));</span> <span class="typ">Get</span><span class="pun">-</span><span class="typ">ADUser</span> <span class="pun">-</span><span class="typ">Properties</span><span class="pln"> whenCreated </span><span class="pun">-</span><span class="typ">Filter</span> <span class="pun">{</span><span class="pln">name </span><span class="pun">-</span><span class="pln">like </span><span class="str">"A*"</span> <span class="pun">-</span><span class="pln">and whenCreated </span><span class="pun">-</span><span class="pln">ge $sp</span><span class="pun">}|%{</span><span class="typ">New</span><span class="pun">-</span><span class="typ">Item</span> <span class="pun">-</span><span class="typ">Path</span> <span class="str">"c:\temp"</span> <span class="pun">-</span><span class="typ">ItemType</span> <span class="typ">Directory</span><span class="pun">;</span><span class="pln"> icacls </span><span class="str">"c:\temp"</span> <span class="pun">/</span><span class="pln">T </span><span class="pun">/</span><span class="pln">grant </span><span class="str">"$($_.samaccountname):(OI)(CI)F"</span> -
March 5, 2020 at 6:27 pm #208512
No need to search Active Directory multiple times. Search AD once then put results into a variable.
PowerShell12345678910111213141516171819202122232425262728293031# Check AD one time for users$user = Get-ADUser -Properties whenCreated -Filter {samaccountname -like 'A*'} -SearchBase "OU=meitavdash,OU=Users,DC=meitav,DC=co,DC=il" |Select-Object name,samaccountname,whencreated# Export list with custom headers$user | ConvertTo-Csv | ConvertFrom-Csv -Header FullName,UserName,CreateDate |Select-Object -Skip 1 | Export-Csv -NoTypeInformation -Path .\user.csv# List two year employees$user2 = Import-Csv .\user.csv |Where-Object {$_.CreateDate -ge (get-date).AddYears(-2)}# Create temp folder for each user$list = [System.Collections.ArrayList]@()Import-Csv .\user.csv | ForEach-Object {New-Item -Path "C:\Temp\$($_.UserName)" -ItemType Directoryicacls "C:\Temp\$($_.UserName)" /T /grant "$($_.UserName):(OI)(CI)F"$obj=[PSCustomObject]@{Name=$_.FullName ; Path="C:\Temp\$($_.UserName)"}$list.Add($obj) | Out-Null}# Set email properties$prop = @{Subject = 'User Path List'Body = $listSmtpServer = 'your.smtp.server.com'}Send-MailMessage @prop
-
-
AuthorPosts
- The topic ‘A script that sends emails via the OUTLOOK SMTP server’ is closed to new replies.