Vous avez peut-être un script d'ouverture de session en dur dans vos comptes utilisateurs. Ces scripts contiennent souvent des agents de toutes sortes (collecte, impression, assistant) qui peuvent consommer des ressources de façon anormale sur vos serveurs.
Voici comment inhiber l'exécution d'un script d'ouverture de session sur vos OS serveurs.
VBS
Cette astuce fonctionne en VBScript, si vous utilisez un autre langage vous ne pourrez pas l'utiliser (mais ça doit s'adapter assez facilement).
Dim winOS Set WshShell = CreateObject("WScript.Shell") winOS = LCase(GetObject("winmgmts:root\cimv2:Win32_OperatingSystem=@").Caption) If InStr(winOs, "server") > 0 Then ' Si OS Windows Server ' decommenter pour debug : ' WshShell.Run "cmd /C echo " & winOs & " > %temp%\BM_os_version.log" Else WshShell.Run "\\srv-app.maboite.local\app$\run.exe /s" End If
Fonctionnement : on lit la version de l'OS dans la variable winOs puis on recherche la présence de la chaine "server". Si c'est le cas on ne fait rien, sinon on lance les programmes habituels.
En cas de besoin décommettez la ligne de debug puis allez dans %temp% avec l'explorateur pour voir le contenu de la variable. Vous pouvez aussi faire un :
Wscript.Echo winOS
Mais balancer une popup comme ça aux utilisateurs n'est pas la meilleure idée... à moins de le faire uniquement sur votre utilisateur.
Complément
Voici une autre version alternative qui se base par rapport au nom de l'OS, en supprimant tous les chaines inutiles telles que professionnel, standard, enterprise, etc.
Dim winOS winOS = LCase(GetObject("winmgmts:root\cimv2:Win32_OperatingSystem=@").Caption) winOs = Replace(winOs,"professionnel","") winOs = Replace(winOs,"microsoft","") winOs = Replace(winOs,"home","") winOs = Replace(winOs,"standard","") winOs = Replace(winOs,"enterprise","") winOs = Replace(winOs,"r2","") winOS = Trim(WinOs) If winOS = "windows 7" Then WScript.Echo "Windows 7 reconnu!" ElseIf winOS = "windows server 2008" Then WScript.Echo "Windows Server reconnu!" ElseIf winOS = "windows server 2008" Then WScript.Echo "Windows Server 2012 reconnu!" Else WScript.Echo "OS inconnu:" + winOS End If
A vous d'adapter suivant vos besoins.
Conclusion
Oui ça fonctionne bien que ce ne soit pas l'idéal d'avoir un script en dur, il vaut mieux privilégier des GPO en fonction de containers des machines (ou requête WMI). Vous pouvez aussi préférer baser la détection sur un groupe Active Directory.
J'ai publié ce billet car j'ai eu besoin de faire cette bidouille dans un contexte particulier, libre à vous de vous en inspirer, de l'améliorer ou de le transposer et bien sûr de le partager.
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
Le premier commentaire c'est pour vous 👇