Objectif :
Voici un script d’envoi de mail à une liste d’utilisateur de l’active directory créée par le logiciel de gestion de quota Nothern-NSS.
Le but est de signaler aux utilisateurs qu’ils ont dépassé leur quota d’utilisation.
Dans ce cas précis, l’adresse mail du user figure dans le champs description de l’Active Directory.
Les données sont sous cette forme :
Le script :
function Enregistrement_Donnees_Dans_Log($Donneelog)
{
$Date = Get-date -f "yyyyMMdd"
$LogFile = "C:\Temp\mon_Logs_$date.log"
if(Test-Path $LogFile)
{
Add-Content $LogFile $Donneelog -encoding Unicode
}
else
{
$NouveauFichier = New-Item $LogFile -type file -force
Add-Content $LogFile $Donneelog -encoding Unicode
}
}
function get-mail
{
Param(
[String]$Nom = "",
[String]$AdresseMail = "",
[String]$cc = "admin-windows@mon.domaine.fr",
[String]$TailleQuota = "",
[String]$UsageQuota = "",
[String]$PourcentageQuota = ""
)
$TailleQuota = $TailleQuota /1MB
$UsageQuota = $UsageQuota /1MB
$expediteur = "admin-windows@mon.domaine.fr"
$destinataire = $AdresseMail
$serveur = "mail.mon.domaine.fr"
$objet = "[DSI]Dépassement de quota d'utilisation de votre espace disque en date du " + [System.DateTime]::Now
$texte = "Bonjour, vous disposez du compte numéro $Nom. `r`n
Vous avez dépassé le quota d'utilisation de l'espace disque qui vous est alloué. `r`n
Vous utilisez $UsageQuota MB sur votre répertoire personnel. L'utilisation maximum autorisée est de $TailleQuota MB. Soit une utilisation de $PourcentageQuota % de votre quota.`r`n
Vous devez archiver vos données avant qu'elles soient automatiquement supprimées par le système.`r`n
---------------------------`r`n
`r`n
L'adminstrateur système
"
$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte
$copiecarbone = new-object System.Net.Mail.Mailaddress $cc, "Administrateur Système"
$message.cc.Add($copiecarbone)
#$attachment = new-object System.Net.Mail.Attachment $fichier
#$message.Attachments.Add($attachment)
$SMTPclient = new-object System.Net.Mail.SmtpClient $serveur
$SMTPclient.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$SMTPclient.Send($message)
}
function get-dn ($SAMName)
{
$root = [ADSI]''
$searcher = new-object System.DirectoryServices.DirectorySearcher($root)
$searcher.filter = "(&(objectClass=user)(sAMAccountName= $SAMName))"
$user = $searcher.findall()
foreach ($objResult in $user)
{
$objItem = $objResult.Properties; $objItem.description
}
}
Function ListeLogin
{
Param(
[String]$FichierCsv = "emplacement de mon fichier.csv"
)
$ImportCsv = Import-Csv $FichierCsv -Delimiter ';'
foreach ($cellule in $ImportCsv)
{
$NomLDAP = $cellule.Object.Substring(33,8)
$AdresseMailLDAP = get-dn $NomLDAP
write-host $AdresseMailLDAP
get-mail -Nom $NomLDAP -AdresseMail $AdresseMailLDAP -TailleQuota $cellule.QuotaSize -UsageQuota $cellule.Usage -PourcentageQuota $cellule.UsagePercent
}
}
ListeLogin


