Delen via


WMI-taken: bestanden en mappen

WMI-taken voor bestanden en mappen wijzigen bestands- of mapeigenschappen via WMI, waaronder het maken van een share of het wijzigen van de naam van een bestand. Als u een bestand wilt kopiëren of een bestand wilt lezen en schrijven, is de eenvoudigste manier om de Windows Script Host FileSystemObject te gebruiken in plaats van WMI. Zie de sectie Bestanden en mappen van het TechNet ScriptCentervoor andere voorbeelden.

CIM_DataFile is een van de weinige CIM-klassen in WMI die is geïmplementeerd. Vermijd het inventariseren of opvragen van alle exemplaren van CIM_DataFile op een computer omdat het gegevensvolume waarschijnlijk van invloed is op de prestaties of dat de computer niet meer reageert.

De scriptvoorbeelden die in dit onderwerp worden weergegeven, verkrijgen alleen gegevens van de lokale computer. Zie Verbinding maken met WMI op een externe computer op een externe computervoor meer informatie over het gebruik van het script om gegevens op te halen van externe computers.

In de volgende procedure wordt beschreven hoe u een script uitvoert.

Een script uitvoeren

  1. Kopieer de code en sla deze op in een bestand met de extensie .vbs, zoals bestandsnaam.vbs. Zorg ervoor dat uw teksteditor geen .txt extensie aan het bestand toevoegt.
  2. Open een opdrachtpromptvenster en navigeer naar de map waarin u het bestand hebt opgeslagen.
  3. Typ cscript bestandsnaam.vbs bij de opdrachtprompt.
  4. Als u geen toegang hebt tot een gebeurtenislogboek, controleert u of u wordt uitgevoerd vanaf een opdrachtprompt met verhoogde bevoegdheid. Sommige gebeurtenislogboeken, zoals het beveiligingslogboek, kunnen worden beveiligd door UAC (User Access Controls).

Notitie

In cscript wordt standaard de uitvoer van een script weergegeven in het opdrachtpromptvenster. Omdat WMI-scripts grote hoeveelheden uitvoer kunnen produceren, kunt u de uitvoer omleiden naar een bestand. Typ cscript bestandsnaam.vbs > outfile.txt bij de opdrachtprompt om de uitvoer van de bestandsnaam.vbs script om te leiden naar outfile.txt.

De volgende tabel bevat scriptvoorbeelden die kunnen worden gebruikt voor het verkrijgen van verschillende typen gegevens van de lokale computer.

Hoe kan ik... WMI-klassen of -methoden
... de naam van een bestand wijzigen zonder een foutbericht te krijgen? Gebruik de klasse CIM_DataFile. Zorg ervoor dat u de volledige padnaam doorgeeft bij het aanroepen van de naam van methode, bijvoorbeeld 'C:\Scripts\Test.txt' in plaats van 'Text.txt'. Voor PowerShell kan het gebruik van CIM_DataFile inefficiënt zijn. Als zodanig kunt u gewoon de Rename-Item cmdlet gebruiken.
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
... bepalen of gebruikers .MP3 bestanden hebben opgeslagen op hun computer?

Gebruik de CIM_DataFile-klasse en selecteer bestanden met behulp van de volgende WQLWHERE component: 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
... Gedeelde mappen op een computer maken?

Gebruik de Win32_Share-klasse en de methode 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.")

... Een map kopiëren?

Gebruik de Win32_Directory-klasse en de methode Copy. Voor PowerShell kunt u gewoon de cmdlet Copy-Item gebruiken.

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
... een map verplaatsen?

Gebruik de Win32_Directory-klasse en de methode Rename. Voor PowerShell kunt u gewoon de cmdlet Move-Item gebruiken.

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

WMI-taken voor scripts en toepassingen

WMI C++-toepassingsvoorbeelden

TechNet ScriptCenter

`