Freigeben über


WMI-Aufgaben: Dateien und Ordner

WMI-Aufgaben für Dateien und Ordner ändern Datei- oder Ordnereigenschaften über WMI, einschließlich des Erstellens einer Freigabe oder des Umbenennens einer Datei. Wenn Sie eine Datei kopieren oder eine Datei lesen und schreiben möchten, besteht die einfachste Möglichkeit darin, das Windows Script Host FileSystemObject anstelle von WMI zu verwenden. Weitere Beispiele finden Sie im Abschnitt Dateien und Ordner im TechNet ScriptCenter.

CIM_DataFile ist eine der wenigen CIM-Klassen in WMI, die implementiert ist. Vermeiden Sie das Aufzählen oder Abfragen für alle Instanzen von CIM_DataFile auf einem Computer, da sich das Datenvolumen wahrscheinlich auf die Leistung auswirkt oder dazu führt, dass der Computer nicht mehr reagiert.

Die in diesem Thema gezeigten Skriptbeispiele erhalten Daten ausschließlich vom lokalen Computer. Weitere Informationen zur Verwendung des Skripts zum Abrufen von Daten auf Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.

Im Folgenden wird die Ausführung eines Skripts beschrieben.

So führen Sie ein Skript aus

  1. Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit der Erweiterung .vbs, z. B. filename.vbs. Achten Sie darauf, dass der Text-Editor der Datei nicht die Erweiterung .txt hinzufügt.
  2. Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
  3. Geben Sie an der Eingabeaufforderung cscript filename.vbs ein.
  4. Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie dies über eine Eingabeaufforderung mit erhöhten Rechten ausführen. Einige Ereignisprotokolle, z. B. das Sicherheitsereignisprotokoll, werden möglicherweise durch Benutzerzugriffssteuerungen (UAC) geschützt.

Hinweis

In cscript wird die Ausgabe eines Skripts standardmäßig im Eingabeaufforderungsfenster angezeigt. Da WMI-Skripts umfangreiche Ausgaben erzeugen können, sollten Sie die Ausgabe an eine Datei umleiten. Geben Sie an der Eingabeaufforderung cscript filename.vbs > outfile.txt ein, um die Ausgabe des Skripts filename.vbs an outfile.txt umzuleiten.

In der folgenden Tabelle werden Skriptbeispiele aufgelistet, die zum Abrufen verschiedener Arten von Daten vom lokalen Computer verwendet werden können.

Vorgehensweisen WMI-Klassen oder -Methoden
... eine Datei umbenennen, ohne eine Fehlermeldung zu erhalten? Verwenden Sie die CIM_DataFile-Klasse. Stellen Sie sicher, dass Sie beim Aufrufen der Methode Rename den gesamten Pfadnamen übergeben, z. B. „C:\Scripts\Test.txt“ anstelle von „Text.txt“. Bei PowerShell kann die Verwendung von CIM_DataFile ineffizient sein. Daher können Sie einfach das Cmdlet „Rename-Item“ verwenden.
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
... bestimmen, ob Benutzer .MP3 Dateien auf ihrem Computer gespeichert haben?

Verwenden Sie die CIM_DataFile-Klasse, und wählen Sie Dateien mit der folgenden WQL WHERE-Klausel: Where-Erweiterung = „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
... freigegebene Ordner auf einem Computer erstellen?

Verwenden Sie die Win32_Share-Klasse und die 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.")

...einen Ordner kopieren?

Verwenden Sie die Win32_Directory-Klasse und die Methode Copy. Für PowerShell können Sie einfach das Cmdlet „Copy-Item“ verwenden.

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
...einen Ordner verschieben?

Verwenden Sie die Win32_Directory-Klasse und die Methode Rename. Für PowerShell können Sie einfach das Cmdlet „Move-Item“ verwenden.

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-Aufgaben für Skripts und Anwendungen

WMI-C++-Anwendungsbeispiele

TechNet ScriptCenter

`