Question Check_Folder_lenght_mail

Plus d'informations
il y a 18 ans 1 mois #1610 par maycry
Check_Folder_lenght_mail a été créé par maycry
Voila, un petit script en powershell qui fait tourner du VBS, suite à un problème de ligne par ligne lors d'envoi de mail via powershell ^^.

Vous avez du LTO ??? vous stockez des données ?? Celles ci s'agrandissent jour après jour? Il faut vérifier le TOTAL afin d'anticiper ^^

Ce script calcule donc la taille des dossiers voulus et en fait une addition afin de vous informer, un mail vous est envoyé avec une petite mise en page.

Exemple ici je vérifie tous les dossiers sauvegardés par NTbackup et qui sont stockés sur une cassette, afin de savoir si la somme dépasse la capacité maximale du LTO, ce script est utile !!

Pitite précision sur le changement de la requete ^

la requête forcée est due aux profils des utilisateurs et les partages réseaux, GET-size ne fonctionne pas sur ces 2 dossiers donc cette méthode est la pour y remédier ^^


[code:1]##################################################################################
# Version 1.0 : -- Stable
##################################################################################
# Check_Folders_Lenght.ps1
#************************************************************************
#####################################################################################################################
# Fonction :«»Script permettant d'obtenir la taille de chaque dossier et une addtion afin d'en obtenir le total
#####################################################################################################################

##############################
# ******** GENERAL ******** #
# Déclaration des variables #
##############################

#******************************#
# *Chemin d'acces au dossiers* #
#******************************#

$folder1 = \"chemin du dossier 1 exemple c:\folder1 \"
$folder2 = \"chemin du dossier 2\"
$folder3 = \"chemin du dossier 3\"
$folder4 = \"chemin du dossier 4\"
$folder5 = \"chemin du dossier 5\"

#################################################################################
#

function Get-Size {
param ([string]$chemin)

$i=0
gci $chemin -recurse -force| foreach -process {$i+=$_.length}
$i = ([Math]::round($i/1GB,2))
return $i

}

#********************************#
# * Instruction des variables * #
# ** Execution de la fonction ** #
#********************************#

$TotalSize_folder1 = Get-Size $folder1
$TotalSize_folder3 = Get-Size $folder3
$TotalSize_folder5 = Get-size $folder5


#********************************#
# ** Execution de la Requete ** #
#********************************#

$TotalSize_folder1
$TotalSize_folder3
$TotalSize_folder5

#################################################################################
#

#
#
# * Appel Objet en force * #
# * Requete force sur ces dossiers * #
#
#


$PwsObject_folder4 = new-object System.IO.DirectoryInfo $folder4
$Object_folder4 = $PwsObject_folder4.GetFiles(\"*.*\",\"AllDirectories\"«») | measure-object length -sum | foreach-object { $Size_folder4 += $_.sum }
$TotalSize_folder4 = ([math]::round($Size_folder4/1GB,2))
$TotalSize_folder4

$PwsObject_folder2 = new-object System.IO.DirectoryInfo $folder2
$Objectfolder2 = $PwsObject_folder2.GetFiles(\"*.*\",\"AllDirectories\"«») | measure-object length -sum | foreach-object { $Size_folder2 += $_.sum }
$TotalSize_folder2 = ([math]::round($Size_folder2/1GB,2))
$Totalsize_folder2

#
#
# * On donne une variable * #
# * comportant le résultat en Go * #
#
#

$TTP = $TotalSize_folder4
$TTDA = $TotalSize_folder2
$TTA = $Totalsize_folder1
$TTDE = $TotalSize_folder3
$TTI = $TotalSize_folder5

#
#
# * On donne une variable * #
# * comportant une phrase d 'indication * #
#
#

$FolderH = \"Le dossier folder4 a une taille de $TTP GO\"
$FolderDA = \"Le dossier folder2 a une taille de $TTDA GO\"
$FolderA = \"Le dossier folder1 a une taille de $TTA GO\"
$FolderDE = \"Le dossier folder3 a une taille de $TTDE GO\"
$FolderI = \"Le dossier folder5 a une taille de $TTI GO\"


$TOTAL = $TTP + $TTDA + $TTA + $TTDE + $TTI



#*****************************************************************************
# Mise en page pour le corps du MAIL ^^^les TAB ne sont pas pris en compte, donc on a appliqué des espaces ^^
$log =[system.IO.File]::CreateText(\"C:\PowerShell_SCRIPTS\Temp\Lenght.log\"«»)

$log.WriteLine(\"
\"«»)
$log.WriteLine(\"Nom du Serveur Nom du Dossier Taille (Go) TOTOAL (GO)\"«»)
$log.WriteLine(\"



\"«»)
$log.WriteLine(\"FILER folder4 $TTP \"«»)
$log.WriteLine(\"FILER folder2 $TTDA \"«»)
$log.WriteLine(\"FILER folder3 $TTDE \"«»)
$log.WriteLine(\"FILER folder1 $TTA \"«»)
$log.WriteLine(\"FILER folder5 $TTI \"«»)
$log.WriteLine(\"
\"«»)
$log.WriteLine(\"FILER BACKUPALL $TOTAL \"«»)
$log.WriteLine(\"\"«»)
$log.WriteLine(\"\"«»)
$log.WriteLine(\"La Taille Total de la sauvegarde BACKUPALL a pour chiffre $TOTAL Go\"«»)
$log.WriteLine(\"
\"«»)
$log.WriteLine(\"$FolderH\"«»)
$log.WriteLine(\"\"«»)
$log.WriteLine(\"$FolderDA\"«»)
$log.WriteLine(\"\"«»)
$log.WriteLine(\"$FolderA\"«»)
$log.WriteLine(\"\"«»)
$log.WriteLine(\"$FolderDE\"«»)
$log.WriteLine(\"\"«»)
$log.WriteLine(\"$FolderI\"«»)
$log.Close()

#*****************************************************************************
# Nom de la variable désigné pour le fichier contenant le corps du mail ::
$logfile = \"\"\"&logfile&\"\"\"\"\"

$vbs =[system.IO.File]::CreateText(\"C:\PowerShell_SCRIPTS\Temp\Send_Mail.vbs\"«»)

$vbs.WriteLine(\"Const ForReading = 1\"«»)
$vbs.WriteLine(\"set ObjFso = CreateObject (\"\"Scripting.FilesystemObject\"\"«»)\"«»)
$vbs.WriteLine(\"set ObjTextFile = objFSO.OpentextFile _\"«»)
$vbs.WriteLine(\"(\"\"C:\PowerShell_SCRIPTS\Temp\Lenght.log\"\", ForReading)\"«»)
$vbs.WriteLine(\"LogFile = ObjtextFile.ReadAll\"«»)
$vbs.WriteLine(\"ObjTextfile.close\"«»)
$vbs.WriteLine(\"' Cr?ation de la Section d'envoi de mail\"«»)
$vbs.WriteLine(\"Set objMessage = CreateObject(\"\"CDO.Message\"\"«»)\"«»)
$vbs.WriteLine(\"objMessage.Subject = \"\"Checked_Folders_Lenght\"\"\"«»)
$vbs.WriteLine(\"objMessage.From = \"\"test@lol.com\"\"\"«»)
$vbs.WriteLine(\"objMessage.To = \"\"groupedistribution@lol.com\"\"\"«»)
$vbs.WriteLine(\"objMessage.TextBody = \"\"$logfile\"«»)
$vbs.WriteLine(\"'==Section des param?tres WINDOWS template pour l'utilisation de l'object CDO.Message\"«»)
$vbs.WriteLine(\"objMessage.Configuration.Fields.Item _\"«»)
$vbs.WriteLine(\"(\"\"schemas.microsoft.com/cdo/configuration/...ing\"\"«») = 2\"«»)
$vbs.WriteLine(\"'nom du serveur smtp\"«»)
$vbs.WriteLine(\"objMessage.Configuration.Fields.Item _\"«»)
$vbs.WriteLine(\"(\"\"schemas.microsoft.com/cdo/configuration/...ver\"\"«») = \"\"IP DU SERVEUR MAIL \"\"\"«»)
$vbs.WriteLine(\"'port du server\"«»)
$vbs.WriteLine(\"objMessage.Configuration.Fields.Item _\"«»)
$vbs.WriteLine(\"(\"\"schemas.microsoft.com/cdo/configuration/...ort\"\"«») = 25\"«»)
$vbs.WriteLine(\"\"«»)
$vbs.WriteLine(\"objMessage.Configuration.Fields.Update\"«»)
$vbs.WriteLine(\"'==Fin des param?tres / commande d'envoi du mail==\"«»)
$vbs.WriteLine(\"objMessage.Send\"«»)
#$vbs.WriteLine(\"Set objFSO = CreateObject(\"\"Scripting.FileSystemObject\"\"«»)\"«»)
#$vbs.WriteLine(\"objFSO.DeleteFile(\"\"C:\PowerShell_SCRIPTS\Temp\*.log\"\"«»)\"«»)

$vbs.close()

$temp =[system.IO.File]::CreateText(\"C:\PowerShell_SCRIPTS\Temp\temp.txt\"«»)

$temp.WriteLine(\"
\"«»)
$temp.Close()


$WshShell = New-Object -comobject \"Wscript.shell\"
$WshShell.run(\"powershell.exe C:\PowerShell_SCRIPTS\Temp\Send_Mail.vbs\"«»)


sleep 30
exemple on dégage le VBS généré ::
Remove-Item C:\PowerShell_SCRIPTS\Temp\*.*


# end of Script
[/code:1]<br><br>Message édité par: Arnaud, à: 2/02/08 09:45

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 18 ans 1 mois #1636 par Jacques Barathon
Bon boulot. Pour que ce script soit vraiment utile à d'autres, il faudrait que tu fasses passer en paramètres le nom du serveur ainsi que le nombre et le nom des dossiers à vérifier, plutôt que de fixer toutes ces informations en dur dans le script.

Janel

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 18 ans 1 mois #1658 par maycry
Réponse de maycry sur le sujet Re:Check_Folder_lenght_mail
Nice ok oui c'est plus simple dans ce cas ^^

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.091 secondes
Propulsé par Kunena