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 PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
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 }
Partager