Demande optimisation d'un script de démarrage
Bonjour à tous,
Alors voila, il m'a été demandé de faire un script de démarrage pour tester la présence d'application, et envoyer des rapports (par mail) puis créer des fichiers sur un espace défini.
Mon script est aujourd'hui fonctionnel depuis quelques semaines.
Ma demande aujourd'hui, et une assistance pour optimiser mon script.
Je ne suis pas d'une formation de développeur, mais avec la toile internet, j'arrive à me dépatouiller. Par contre, concernant l'optimisation c'est une autre histoire...
Voici mon script (qui s’exécute par GPO). Il est commenté pour plus de visibilité, et j'ai changé le champ de quelques variables du début. A adapter à son système.
Par avance merci de vos futures retours.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
| <#-------------------------------------------
Version : 0.2
Information du Script
Propriétaire du script : Moi
Nom du Script : Ordinateurs.ps1
Description : Au démarrage de la session, récupère différentes informations et les écrit dans un fichier Utilisateur sur le réseau
#>
#---------------------------
#Déclaration des variables
#---------------------------
#Variable de récupération du nom d'utilisateur
$UserName = (Get-Item env:\UserName).value
#Variable de récupération du Nom de l'ordinateur
$NomOrdi = (Get-Item env:\COMPUTERNAME).value
#Variable du répertoire de localisation user
$DossierOrdi = "\\SRVXYZ\inventaire$\Ordinateurs\"
#$Date = [System.DateTime]::Now
$Date = get-date -uformat "%A - %d/%m/%Y / GMT %Z"
#Variable des Applicatifs à tester
$PathFusion = "${Env:ProgramFiles}\FusionInventory-Agent"
$PathAgentKas = "${Env:ProgramFiles(x86)}\Kaspersky Lab\NetworkAgent"
$PathClientKas = "${Env:ProgramFiles(x86)}\Kaspersky Lab\Kaspersky Endpoint Security for Windows"
$Doc = "C:\temp"
$VersionScript = "V0.2"
$DateScript = "15 fev 2019"
#------------------------------------
#==========================================================================
# Paramètre ENVOI DU MAIL
#==========================================================================
$expediteur = "script@temporaire.fr"
$destinataire = "Info@temporaire.Fr"
$serveur = "@serveur"
#$objet = "Absence d'application du " + "$Date" + "--sur $NomOrdi"# + "--$UserName"
#$texte = "En fichier joint, les applications absentes du poste " + $NomOrdi + " avec l'adresse IP : " + $ip
#Send-MailMessage -From "<$expediteur>" -To "<$destinataire>" -Subject "$objet" -Body "$texte" -SmtpServer "$serveur" -Attachments "$NewFile"
#-----------------------------
#Début des actions
#----------------------------
#Variable concaténé
$FileOrdi = $DossierOrdi + $NomOrdi + ".txt"
#Test si le fichier existe
$FichierExist = Test-Path $FileOrdi
$PathFusionExist = Test-Path $PathFusion
$PathAgentKasExist = Test-Path $PathAgentKas
$PathClientKasExist = Test-Path $PathClientKas
$ip = (Get-WmiObject -Class win32_networkadapterconfiguration | where {($_.ipaddress -ne $null) -and ($_.defaultipgateway -ne $null) -and ($_.DNSDomain -ne $null)} | Select-Object IPAddress -First 1).IPAddress[0]
#Permet vérifier que lordinateur est en ligne avant de lancer une action sur lui via un script.
$ping = new-object System.Net.NetworkInformation.Ping
$reply = $ping.send($NomOrdi)
if ($reply.status eq Success)
{
#write-host "$ComputerName is online."
If ($FichierExist -eq $False)
{
#Création du fichier Si il n'existe pas
New-item -Path $FileOrdi -itemType file
ADD-content -path $FileOrdi -value "Le : $Date"
ADD-content -path $FileOrdi -value "Nom de l'ordinateur : $NomOrdi"
ADD-content -path $FileOrdi -value "Adresse IP du poste : $ip"
ADD-content -path $FileOrdi -value "----------------------------------"
#Test de présence des répertoires d'installation
#Fusion Inventory
if ($PathFusionExist -eq "True")
{
ADD-content -path $FileOrdi -value "Installation Fusion Inventory OK"
}
Else
{
ADD-content -path $FileOrdi -value "Installation Fusion Inventory NON-OK"
#-------------------------------
#Variable pour mail personnalisé à l'application
$appli = "Fusion Inventory"
$objet = "Absence de " + $appli + " du " + "$Date" + "--sur $NomOrdi"
$texte = "En fichier joint, l'application " + $appli + " est absente du poste " + $NomOrdi + " avec l'adresse IP : " + $ip + "`n" + "`n" + "`n"
$texte += "Emplacement Documentation du script : $Doc" + "`n"
$texte += "Version du script : $VersionScript" + "`n"
$texte += "Date du script : $DateScript"
#Envoie d'un mail
#Send-MailMessage -From "<$expediteur>" -To "<$destinataire>" -Subject "$objet" -Body "$texte" -SmtpServer "$serveur" -Attachments "$FileOrdi"
Send-MailMessage -From "<$expediteur>" -To "<$destinataire>" -Subject "$objet" -Body "$texte" -SmtpServer "$serveur" -Attachments "$FileOrdi"
}
#Agent Kaspersky
if ($PathAgentKasExist -eq "True")
{
ADD-content -path $FileOrdi -value "Installation Agent Kaspersky OK"
}
Else
{
ADD-content -path $FileOrdi -value "Installation Agent Kaspersky NON-OK"
#-------------------------------
#Variable pour mail personnalisé à l'application
$appli = "Agent Kaspersky"
$objet = "Absence de " + $appli + " du " + "$Date" + "--sur $NomOrdi"
$texte = "En fichier joint, l'application " + $appli + " est absente du poste " + $NomOrdi + " avec l'adresse IP : " + $ip + "`n" + "`n" + "`n"
$texte += "Emplacement Documentation du script : $Doc" + "`n"
$texte += "Version du script : $VersionScript" + "`n"
$texte += "Date du script : $DateScript"
#Envoie d'un mail
Send-MailMessage -From "<$expediteur>" -To "<$destinataire>" -Subject "$objet" -Body "$texte" -SmtpServer "$serveur" -Attachments "$FileOrdi"
}
#Client Kaspersky
if ($PathClientKasExist -eq "True")
{
ADD-content -path $FileOrdi -value "Installation Client Kaspersky OK"
}
Else
{
ADD-content -path $FileOrdi -value "Installation Client Kaspersky NON-OK"
#-------------------------------
#Variable pour mail personnalisé à l'application
$appli = "Client Kaspersky"
$objet = "Absence de " + $appli + " du " + "$Date" + "--sur $NomOrdi"
$texte = "En fichier joint, l'application " + $appli + " est absente du poste " + $NomOrdi + " avec l'adresse IP : " + $ip + "`n" + "`n" + "`n"
$texte += "Emplacement Documentation du script : $Doc" + "`n"
$texte += "Version du script : $VersionScript" + "`n"
$texte += "Date du script : $DateScript"
#Envoie d'un mail
Send-MailMessage -From "<$expediteur>" -To "<$destinataire>" -Subject "$objet" -Body "$texte" -SmtpServer "$serveur" -Attachments "$FileOrdi"
}
}
else {
#Supprimer le fichier
Remove-Item $FileOrdi
#Créer le nouveau fichier
New-item $FileOrdi -itemType file
ADD-content -path $FileOrdi -value "Le : $Date"
#ADD-content -path $FileOrdi -value "Nom d'utilisateur : $UserName "
ADD-content -path $FileOrdi -value "Nom de l'ordinateur : $NomOrdi"
ADD-content -path $FileOrdi -value "Adresse IP du poste : $ip"
ADD-content -path $FileOrdi -value "----------------------------------"
#Test de présence des répertoires d'installation
#Fusion Inventory
if ($PathFusionExist -eq "True")
{
ADD-content -path $FileOrdi -value "Installation Fusion Inventory OK"
}
Else
{
ADD-content -path $FileOrdi -value "Installation Fusion Inventory NON-OK"
#-------------------------------
#Variable pour mail personnalisé à l'application
$appli = "Fusion Inventory"
$objet = "Absence de " + $appli + " du " + "$Date" + "--sur $NomOrdi"
$texte = "En fichier joint, l'application " + $appli + " est absente du poste " + $NomOrdi + " avec l'adresse IP : " + $ip + "`n" + "`n" + "`n"
$texte += "Emplacement Documentation du script : $Doc" + "`n"
$texte += "Version du script : $VersionScript" + "`n"
$texte += "Date du script : $DateScript"
#Envoie d'un mail
Send-MailMessage -From "<$expediteur>" -To "<$destinataire>" -Subject "$objet" -Body "$texte" -SmtpServer "$serveur" -Attachments "$FileOrdi"
}
#Agent Kaspersky
if ($PathAgentKasExist -eq "True")
{
ADD-content -path $FileOrdi -value "Installation Agent Kaspersky OK"
}
Else
{
ADD-content -path $FileOrdi -value "Installation Agent Kaspersky NON-OK"
#-------------------------------
#Variable pour mail personnalisé à l'application
$appli = "Agent Kaspersky"
$objet = "Absence de " + $appli + " du " + "$Date" + "--sur $NomOrdi"
$texte = "En fichier joint, l'application " + $appli + " est absente du poste " + $NomOrdi + " avec l'adresse IP : " + $ip + "`n" + "`n" + "`n"
$texte += "Emplacement Documentation du script : $Doc" + "`n"
$texte += "Version du script : $VersionScript" + "`n"
$texte += "Date du script : $DateScript"
#Envoie d'un mail
Send-MailMessage -From "<$expediteur>" -To "<$destinataire>" -Subject "$objet" -Body "$texte" -SmtpServer "$serveur" -Attachments "$FileOrdi"
}
#Client Kaspersky
if ($PathClientKasExist -eq "True")
{
ADD-content -path $FileOrdi -value "Installation Client Kaspersky OK"
}
Else
{
ADD-content -path $FileOrdi -value "Installation Client Kaspersky NON-OK"
#-------------------------------
#Variable pour mail personnalisé à l'application
$appli = "Client Kaspersky"
$objet = "Absence de " + $appli + " du " + "$Date" + "--sur $NomOrdi"
$texte = "En fichier joint, l'application " + $appli + " est absente du poste " + $NomOrdi + " avec l'adresse IP : " + $ip + "`n" + "`n" + "`n"
$texte += "Emplacement Documentation du script : $Doc" + "`n"
$texte += "Version du script : $VersionScript" + "`n"
$texte += "Date du script : $DateScript"
#Envoie d'un mail
Send-MailMessage -From "<$expediteur>" -To "<$destinataire>" -Subject "$objet" -Body "$texte" -SmtpServer "$serveur" -Attachments "$FileOrdi"
}
}
}
else
{
exit
} |