Partager via


Tâches WMI : fichiers et dossiers

Les tâches WMI pour les fichiers et dossiers modifient les propriétés d’un fichier ou d’un dossier via WMI, y compris la création d’un partage ou le nom d’un fichier. Si vous souhaitez copier, lire ou écrire un fichier, le moyen le plus simple consiste à utiliser l’objet FileSystemObject de l’hôte de script Windows plutôt que WMI. Pour obtenir d’autres exemples, consultez la section Fichiers et dossiers dans TechNet ScriptCenter.

CIM_DataFile est l’une des rares classes CIM dans WMI à être intégrée. Évitez d’énumérer ou d’interroger toutes les instances de CIM_DataFile sur un ordinateur, car le volume de données est susceptible d’en affecter les performances ou de l’empêcher de répondre.

Les exemples de scripts présentés dans cette rubrique n’obtiennent des données qu’à partir de l’ordinateur local. Pour plus d’informations sur l’utilisation du script afin d’obtenir des données provenant d’ordinateurs distants, consultez Connexion à WMI sur un ordinateur distant.

La procédure suivante explique comment exécuter un script.

Pour exécuter un script

  1. Copiez le code, puis enregistrez-le dans un fichier avec l’extension .vbs, par exemple nomfichier.vbs. Vérifiez que votre éditeur de texte n’ajoute pas d’extension .txt au fichier.
  2. Ouvrez une fenêtre d’invite de commandes, puis accédez au répertoire où vous avez enregistré le fichier.
  3. Tapez cscript nomfichier.vbs à l’invite de commandes.
  4. Si vous ne pouvez pas accéder à un journal des événements, vérifiez si vous exécutez la commande à partir d’une invite de commandes avec élévation de privilèges. Certains journaux des événements, par exemple le journal des événements de sécurité, peuvent être protégés par la fonctionnalité UAC (contrôle de compte d’utilisateur).

Notes

Par défaut, cscript affiche la sortie d’un script dans la fenêtre d’invite de commandes. Dans la mesure où les scripts WMI peuvent produire de grandes quantités de données en sortie, vous pouvez être amené à rediriger la sortie vers un fichier. Tapez cscript nomfichier.vbs > fichiersortie.txtà l’invite de commandes pour rediriger la sortie du scriptnomfichier.vbs vers fichiersortie.txt.

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

Comment puis-je... Classes ou méthodes WMI
... renommer un fichier sans recevoir de message d’erreur ? Utilisez la classe CIM_DataFile . Veillez à transmettre le nom du chemin d’accès entier lors de l’appel de la méthode Rename, par exemple, « C:\Scripts\Test.txt » au lieu de « Text.txt ». Pour PowerShell, l’utilisation de CIM_DataFile peut être inefficace. Par conséquent, vous pouvez simplement utiliser l’applet de commande 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 des fichiers à l’aide de la clause WQLWHERE 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 l’applet de commande 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 l’applet de commande 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

`