PowerShell este un instrument din ce în ce mai utilizat. Scriptul următor poate fi folosit pentru crearea userilor în Active Directory şi trimiterea unui e-mail inţial de informare despre anumite resurse de access.
Scriptul trebuie salvat şi rulat cu drepturi administrative pe serverul de e-mail (Exchange 2007) care ar trebui să aibă instalat și PowerShell-ul. Din punct de vedere managerial, NU este corect ca parola utilizatorului să fie trimisă prin e-mail. Alte comentarii în cadrul scriptului.
O varianta în VBS poate fi găsită la adresa: http://searchwindevelopment.techtarget.com/tip/0,289483,sid8_gci1086268,00.html dar se foloseste doar pentru crearea contului şi a mail box-ului nu şi trimiterea de e-mail. Consider utilizarea PowerShell mult mai simplă şi mai uşor de utilizat.
Copiaţi scriptul de mai jos în Notepad sau alt editor de text şi schimbaţi valorile constantelor. Lansarea scriptului: ./psADAccCreate-MailSend.ps1 <prenume> <nume>
***** psADAccCreate-MailSend.ps1 *****
# Creare cont de utilizator in AD, *
# adresa mail in Exchange 2007 si *
# trimitere email *
# *
# Creat de: Valy Greavu *
# 09/11/2008 *
# **************************************
# Scriptul trebuie executat pe serverul de e-mail cu rol de mailbox
# Preluarea parametrilor de rulare: Nume, Prenume, Parola
param ([string] $Prenume, [string] $Nume)
# Definirea constantelor:
$Domain = "feaa.uaic.ro" #Trebuie specificat numele complet de DNS
$ou = $Domain + "/Utilizatori/Studenti" #Este specificata toata calea incepind de la numele domeniului
$MailDB = "MAIL\StudentStore\StudentsDB" #Se modifica in functie de numele serverului si a bazelor de date specifice.
$SenderAdmin = "valy.greavu@feaa.uaic.ro" #Adresa de mail a adminului.
$SMTPServer = "mail.feaa.uaic.ro"
# Verificarea datelor introduse
if ($Prenume -eq "")
{
write-host "Prenumele nu a fost introdus!" -foregroundcolor Red
write-host "Exemplu utilizare: ./psADAccCreate-MailSend.ps1 <prenume> <nume>" -foregroundcolor Red
}
elseif ($Nume -eq "")
{
write-host "Numele nu a fost introdus!" -foregroundcolor Red
write-host "Exemplu utilizare: ./psADAccCreate-MailSend.ps1 <prenume> <nume>" -foregroundcolor Red
}
else
{
write-host "Incepe crearea contului pentru:" $Prenume $Nume -foregroundcolor Green
# Crearea contului si a adresei de mail
# Parola trebuie introdusa in aceasta etapa
# Parola nu poate fi trecuta in script pentru ca este incompatibila cu System.Security.SecureString
# ResetPasswordOnNextLogon trebuie sa fie $false pentru ca utilizatorul sa se poata conecta la sistemul de mail inainte de a isi schimba parola.
# Daca acesta se va loga pentru prima data pe un calculator din domeniu atunci va trebui parametrul trebuie setat pe $true
New-Mailbox -Name "$Prenume $Nume" -Alias $Prenume"."$Nume -OrganizationalUnit $ou -UserPrincipalName $Prenume"."$Nume"@"$Domain -SamAccountName $Prenume"."$Nume -FirstName $Prenume -LastName $Nume -ResetPasswordOnNextLogon $false -Database $MailDB
# Comanda New-Mailbox trebuie scrisă pe o singură linie
write-host "Am creat contul:" $Prenume $Nume -foregroundcolor Green
# Compunere e-mail initial
$Destinatar = $Prenume+"."+$Nume+"@"+$Domain
$Subiect = "Bun venit in reteaua :"+$Domain+"!"
# Corp mesaj scris linie cu linie.
# Combinatia `r`n face trecerea pe rindul urmator in continutul mailului.
$bodyln1 = "`r`Salut "+$Prenume + "`r`n"
$bodyln2 = "`r`Te informam ca adresa ta de e-mail: " + $Destinatar + " poate fi accesata prin Outlook sau prin OWA la adresa: https://"+$SMTPServer+"/owa. `r`n"
$bodyln3 = "Te rugam sa respecti politicile de securitate si regulamentele afisate in sistemul de Intranet accesibil la adresa: http://Intranet/. `r`n"
$bodyln4 = "`r`Pentru a schimba parola de acces in retea te rugam sa folosesti combinatia de taste Ctrl+Alt+Del sau legatura de pe prima pagina din Intranet.`r`n"
$bodyln5 = "Pentru orice fel de probleme va rugam sa va adresati departamentului de Help Desk la adresa de mail: support@"+$Domain+".`r`n"
$bodyln6 = "Cu stima,`r`n <em>Departamentul IT</em>.`r`n"
$body = $bodyln1 + $bodyln2 + $bodyln3 +$bodyln4 +$bodyln5 + $bodyln6
$msg = new-object System.Net.Mail.MailMessage $SenderAdmin, $Destinatar, $Subiect, $body
# Trimitere email
$client = new-object System.Net.Mail.SmtpClient $SMTPServer
$client.credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$client.Send($msg)
write-host "Am trimis mail:" -foregroundcolor Yellow
write-host "Terminat!" -foregroundcolor Green
}
# **** EOF() ****
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, „Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
Firul de execuţie:
1. Lansare PowerShell cu drepturi administrative şi navigare în directorul de scripturi:

2. Rulare comanda în mod eronat:

3. Rulare comanda corect:

4. Mail initial:

Trebuie retinut ca marcajele HTML sunt interpretate ca si text dar adresele HTTP, HTTPS sunt interpretate corect.
Acest articol este o republicare din vechiul meu blog.