Comment puis-je savoir si mes utilisateurs possèdent certains fichiers sur leur ordinateur ?

S'il vous plaît Docteur Script...

Hey, Scripting Guy!

Bienvenue dans cette nouvelle section TechNet, dans laquelle le Docteur Script de Microsoft répond aux questions récurrentes sur les scripts d'administration système.

Question du jour : comment puis-je savoir si mes utilisateurs possèdent certains fichiers sur leur ordinateur ?

Comment puis-je savoir si mes utilisateurs possèdent certains fichiers sur leur ordinateur ?Comment puis-je savoir si mes utilisateurs possèdent certains fichiers sur leur ordinateur ?

S'il vous plaît Docteur Script... Est-il possible de rechercher des fichiers .MP3 ou un autre type de fichier que mes utilisateurs ne devraient pas avoir sur leur ordinateur ?

-- AK

Bonjour AK. Une fois de plus, WMI vient à la rescousse. La classe CIM_DataFile permet de trouver facilement certains types de fichiers sur un ordinateur. Vous voulez savoir si des fichiers .MP3 traînent sur l'ordinateur de vos utilisateurs ? Il vous suffit d'utiliser un script semblable au suivant :

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'mp3'")
For Each objFile in colFiles
    Wscript.Echo objFile.Name 
Next

Comme vous pouvez le constater, il s'agit d'un script WMI plutôt standard : il recherche simplement toutes les instances de la classe CIM_DataFile possédant l'extension MP3 (notez que vous ne devez pas indiquer le point ; écrivez MP3 et non pas .MP3). C'est un script extrêmement simple et plutôt rapide : sur un ordinateur portable de 2,39 GHz, 512 Mo de RAM et 30 Go d'espace sur le disque dur, vous pouvez obtenir la liste de tous les fichiers .MP3 en moins de 30 secondes.

Vous pouvez même rechercher plusieurs types de fichiers via une seule requête. Par exemple, le script suivant recherche les fichiers .WMA et .MP3 :

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'mp3' OR Extension = 'wma'")
For Each objFile in colFiles
    Wscript.Echo objFile.Name 
Next

Mais ce n'est pas ce qu'il y a de plus intéressant. Vous dites que vos utilisateurs ne sont pas autorisés à posséder ce type de fichier. Nous imaginons que vous aimeriez qu'ils les suppriment de leur ordinateur. Le script précédent ne vous permet pas une telle opération ; il permet juste d'obtenir le nom de tous les fichiers .MP3 et .WMA présents sur un ordinateur. Vous devez, par la suite, contacter chaque utilisateur et lui demander de supprimer les fichiers incriminés. Cela demande beaucoup de travail, et vous devez être sûr que les utilisateurs suppriment bien les fichiers (sans supprimer accidentellement d'autres fichiers). Pourquoi ne pas laisser un script faire cette besogne pour vous ? Non seulement le script suivant détecte tous les fichiers .MP3 et .WMA présents sur un ordinateur, mais il les supprime également au fur et à mesure :

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
    ("Select * from CIM_DataFile where Extension = 'mp3' OR Extension = 'wma'")
For Each objFile in colFiles
   objFile.Delete 
Next

En plus, cette opération s'effectue aussi rapidement et facilement sur des ordinateurs distants que sur l'ordinateur local. Il vous suffit de remplacer la valeur de la variable strComputer par le nom de l'ordinateur distant, et le tour est joué.

Pour en savoir plus

Consultez les archives de S'il vous plaît Docteur Script...