Active Directory, Exchange si PowerShell


 

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.

Un gând despre „Active Directory, Exchange si PowerShell

Comentariile nu închise.

Blog la WordPress.com.

SUS ↑