Partager via


Tâches WMI : Fichiers et Dossiers

Les tâches WMI pour les fichiers et dossiers modifient les propriétés des fichiers ou dossiers via WMI, y compris la création d’un partage ou le renommage d’un fichier. Si vous souhaitez copier un fichier ou lire et écrire un fichier, la façon la plus simple est d’utiliser le FileSystemObject de Windows Script Host plutôt que WMI. Pour d’autres exemples, veuillez consulter la section Fichiers et Dossiers du TechNet ScriptCenter.

CIM_DataFile est l’une des rares classes CIM implémentées dans WMI. Évitez d’énumérer ou de rechercher toutes les instances de CIM_DataFile sur un ordinateur car le volume de données est susceptible d’affecter les performances ou de provoquer l’arrêt de la réponse de l’ordinateur.

Les exemples de script présentés dans cette rubrique obtiennent des données uniquement à partir de l’ordinateur local. Pour plus d’informations sur la façon d’utiliser le script pour obtenir des données à partir d’ordinateurs distants, veuillez consulter Connexion à WMI sur un ordinateur distant.

La procédure suivante décrit comment exécuter un script.

Pour exécuter un script

  1. Copiez le code et enregistrez-le dans un fichier avec une extension .vbs, comme nomdefichier.vbs. Assurez-vous que votre éditeur de texte n’ajoute pas une extension .txt au fichier.
  2. Ouvrez une fenêtre d’invite de commandes et naviguez jusqu’au répertoire où vous avez enregistré le fichier.
  3. Tapez cscript nomdefichier.vbs à l’invite de commandes.
  4. Si vous ne pouvez pas accéder à un journal des événements, vérifiez si vous exécutez à partir d’une invite de commandes élevée. Certains journaux des événements, comme le journal des événements de sécurité, peuvent être protégés par les contrôles de compte d’utilisateur (UAC).

Remarque

Par défaut, cscript affiche la sortie d’un script dans la fenêtre d’invite de commandes. Comme les scripts WMI peuvent produire de grandes quantités de sortie, vous pouvez vouloir rediriger la sortie vers un fichier. Tapez cscript nomdefichier.vbs > outfile.txt à l’invite de commandes pour rediriger la sortie du script nomdefichier.vbs vers outfile.txt.

Le tableau suivant liste des exemples de scripts qui peuvent être utilisés pour obtenir divers types de données de l’ordinateur local.

Comment puis-je... Classes ou méthodes WMI
...renommer un fichier sans obtenir de message d’erreur ? Utilisez la classe CIM_DataFile. Assurez-vous de passer le nom de chemin complet lors de l’appel de la méthode Rename, par exemple, « C:\Scripts\Test.txt » au lieu de « Test.txt ». Pour PowerShell, utiliser CIM_DataFile peut être inefficace. Ainsi, vous pouvez simplement utiliser la cmdlet Rename-Item.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery ("Select * from CIM_DataFile where Name = " & "'c:\\scripts\\toggle_service.vbs'")
For Each objFile in colFiles
    errResult = objFile.Rename("c:\scripts\toggle_service.old")
Next
PowerShell
rename-item c:\scripts\toggle_service.vbs toggle_service.old
...déterminer si les utilisateurs ont des fichiers .MP3 stockés sur leur ordinateur ?

Utilisez la classe CIM_DataFile et sélectionnez les fichiers en utilisant la clause WQL WHERE suivante : Where Extension = "MP3".

VB
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 "File Name: " & objFile.Name & "." & objFile.Extension
    Wscript.Echo "Path: " & objFile.Path
Next
PowerShell
Get-WmiObject -Class CIM_DataFile -namespace "root\cimv2" -Filter "Extension = 'mp3'" | `
   format-list Name, Extension, Path
...créer des dossiers partagés sur un ordinateur ?

Utilisez la classe Win32_Share et la méthode Create.

VB
Const FILE_SHARE = 0
Const MAXIMUM_CONNECTIONS = 25
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewShare = objWMIService.Get("Win32_Share")
errReturn = objNewShare.Create("C:\Finance", "FinanceShare", FILE_SHARE, MAXIMUM_CONNECTIONS, "Public share for the Finance group.")

PowerShell
$FILE_SHARE = 0 $MAXIMUM_CONNECTIONS = 25 

$NewDir = new-item C:\Finance -type directory $Shares= [WMICLASS]"Win32_Share" [void]$Shares.Create("C:\Finance","FinanceShare", $FILE_SHARE, $MAXIMUM_CONNECTIONS, "Public share for the Finance group.")

...copier un dossier ?

Utilisez la classe Win32_Directory et la méthode Copy. Pour PowerShell, vous pouvez simplement utiliser la cmdlet Copy-Item.

VB
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
 
Set colFolders = objWMIService.ExecQuery("Select * from Win32_Directory where Name = 'c:\\Scripts'") 
 
For Each objFolder in colFolders 
    errResults  = objFolder.Copy("D:\Archive") 
Next 
PowerShell
Copy-Item C:\Scripts -Destination D:\Archive -Recurse
...déplacer un dossier ?

Utilisez la classe Win32_Directory et la méthode Rename. Pour PowerShell, vous pouvez simplement utiliser la cmdlet Move-Item.

VB
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
 
Set colFolders = objWMIService.ExecQuery _ 
    ("Select * from Win32_Directory where name = 'c:\\Scripts'") 
 
For Each objFolder in colFolders 
    errResults = objFolder.Rename("C:\Admins\Documents\Archive\VBScript") 
Next
PowerShell
move-item -path C:\Scripts -destination C:\Admins\Documents\Archive\PowerShell

Tâches WMI pour les scripts et les applications

Exemples d’applications WMI C++

TechNet ScriptCenter

`