Verwalten von Datenträgerkontingenten in Windows Server 2003 und Windows XP

Eine Übersicht der neuen Features in Windows Server 2003 und Windows XP, mit deren Hilfe Skripts zum unternehmensweiten Verwalten von Datenträgerkontingenten und Einstellungen für Datenträgerkontingente erstellt werden können.

Auf dieser Seite

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Eine kurze Geschichte der Datenträgerkontingente

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png So funktionieren Datenträgerkontingente

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Einstellungen für das Verwalten von Datenträgerkontingenten

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Aktivieren und Deaktivieren von Datenträgerkontingenten

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Ändern von Datenträgerkontingent-Einstellungen

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Verwalten von Datenträgerkontingent-Einträgen für einzelne Benutzer

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Abrufen eines einzelnen Datenträgerkontingent-Eintrags

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Ändern eines Datenträgerkontingent-Eintrags

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Löschen eines Datenträgerkontingent-Eintrags

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Erstellen eines neuen Datenträgerkontingent-Eintrags

Dn151196.ACDCF196BC98A92A7E35715F19C8C405(de-de,TechNet.10).png Weitere Informationen

Eine kurze Geschichte der Datenträgerkontingente

Wann immer man auf ein altes Sprichwort trifft, fällt es für gewöhnlich ziemlich leicht, wenigstens ein Körnchen Wahrheit im gegebenen Rat zu finden. Trau, schau wem? Ergibt fraglos Sinn. Ein Narr und sein Geld sind bald geschieden? Einen Moment, wir überprüfen nur kurz das Budget der Skriptabteilung… OK, wir widersprechen nicht. Der frühe Vogel fängt den Wurm? Naja, das müssen wir wohl glauben. Aber es klingt einleuchtend.

Doch dann gibt es den hier: Überleg Dir gut, was Du dir wünschst, es könnte nämlich wahr werden. Wie, bitte? Das macht doch nun gar keinen Sinn. Warum sollten wir uns etwas wünschen und dann unglücklich sein, wenn wir es bekommen? Nun ja: Selbst die Verfasser alter Sprichwörter hatten wohl ihre schlechten Tage. (Das liefert zumindest eine teilweise Erklärung für den alten Spruch „Man kann nicht alles haben“.)

Wie sich jedoch zeigt, verstehen Systemadministratoren aus der Zeit vor Windows 2000 die Bedeutung des alten „überleg' Dir gut, was Du dir wünschst“ sehr wohl. In der guten alten Zeit von Windows NT gehörten zu den obersten Punkten auf der Wunschliste von Systemadministratoren Datenträgerkontingente, etwas, das Windows NT nicht unterstützte. Und jetzt raten Sie, was geschah, als Windows 2000 veröffentlicht wurde? Ganz recht, Ihr Wunsch war Microsofts Befehl: Windows 2000 bot volle Unterstützung für Datenträgerkontingente (auf NTFS-Datenträgern) direkt im Lieferzustand. Wie ein anderes Sprichwort sagt: „Bitte, und so wird Dir gegeben“.

Also, wo liegt das Problem? Also, um das gleich klarzustellen: Mit den Datenträgerkontingenten war gar nichts verkehrt; sie funktionierten genau so wie versprochen. Das Problem bestand darin, dass Systemadministratoren jetzt ein wunderbares neues Tool zur Verfügung hatten, aber kein wirklich brauchbares Verfahren zu dessen Verwaltung. Datenträgerkontingente mussten auf Laufwerksebene verwaltet werden; es gab kein einfaches Verfahren, die Datenträgernutzung für einen Computer „Über Alles“ abzurufen (also die Datenträgernutzung über alle Laufwerke eines Computers hinweg). Und damit nicht genug:

  • Es bestand keine Möglichkeit zum Generieren von Datenträgerkontingent-Berichten.
  • Das Verwalten von Datenträgerkontingenten auf Remotecomputern war zwar möglich, musste jedoch mit recht obskuren Methoden erfolgen.
  • Die Skriptoptionen waren gleichermaßen eingeschränkt, da sie für die Funktion auf einem Einzellaufwerk und nur auf dem lokalen Computer entwickelt worden waren. (Wenn Sie sich übrigens für die Verwendung von Skripts zur Verwaltung von Datenträgerkontingenten in Windows 2000 interessieren, lesen Sie „Managing Disk Quotas“ im Microsoft Windows 2000 Scripting Guide.)

Anders ausgedrückt, Systemadministratoren bekamen genau das, was sie sich gewünscht hatten: Datenträgerkontingente. Das Problem war, dass sie sich nicht zugleich auch Tools zur Verwaltung von Datenträgerkontingenten gewünscht hatten. Datenträgerkontingente waren - und sind immer noch - sehr nützlich in Windows 2000, doch der Mangel an Verwaltungstools macht die Verwaltung von Datenträgerkontingenten im Bereich des gesamten Unternehmens sehr schwierig.

Aber Sie kennen ja das alte Sprichwort: Geduld wird belohnt. So scheint das im Fall der Datenträgerkontingente tatsächlich zu sein. Mit Windows 2000 erhielten Systemadministratoren Datenträgerkontingente, aber keine Unterstützung, wenn es um das unternehmensweite Verwalten von Kontingenten ging. Mit Windows Server 2003 (und Windows XP) hat sich diese Situation geändert. Jetzt können Sie auf einfache Weise Datenträgerkontingente unternehmensweit verwalten. Das hat den Grund, dass Windows Server 2003 und Windows XP zwei neue WMI-Klassen umfassen, die für das Verwalten von Datenträgerkontingenten und Einstellungen für Datenträgerkontingente entwickelt wurden.

Dieser Artikel behandelt detailliert diese zwei WMI-Klassen und bietet eine Reihe von Beispielskripts, mit denen veranschaulicht wird, wie diese Klassen zum Ausführen verschiedenster Verwaltungsaufgaben verwendet werden können. Bevor es soweit ist, müssen wir jedoch eine kurze Auszeit nehmen und uns ein wenig mit der Technologie befassen, auf der Datenträgerkontingente beruhen.

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).png Zum Seitenanfang

So funktionieren Datenträgerkontingente

Datenträgerkontingente stellen einen integralen Bestandteil des NTFS-Dateisystems dar. Wann immer eine Datei (oder ein Ordner) auf einem NTFS-Laufwerk erstellt wird, wird diese Datei oder dieser Ordner einem Besitzer zugeordnet (normalerweise der Benutzer, der die Datei oder den Ordner zuerst erstellt hat). Vor dem eigentlichen Speichern der Datei ruft NTFS die Benutzer-ID des Dateibesitzers ab und speichert diese Information im Attribut für die Standardinformation der Datei (das für die Buchführung über die Speicherplatzzuordnung verwendet wird). Anschließend sucht NTFS den Datenträgerkontingent-Eintrag des betreffenden Benutzers und bestimmt, ob die neue Zuordnung von Speicherplatz bewirkt, dass der Benutzer das zugeordnete Kontingent überschreitet. Ist dies der Fall, unternimmt NTFS die passenden Schritte, die im Protokollieren eines Eintrags im Systemereignisprotokoll oder im Verweigern der Datei- oder Ordnererstellung durch den Benutzer bestehen können. In dem Maß, da sich die Dateigröße ändert, aktualisiert NTFS den Datenträgerkontingent-Eintrag, um den insgesamt vom Benutzer verbrauchten Speicherplatz anzugeben. All dies geschieht im Hintergrund und so schnell, dass Sie es gar nicht bemerken.

Bevor Sie Datenträgerkontingente effektiv verwalten können, müssen Sie verstehen, dass Datenträgerkontingente nicht auf Computerebene definiert werden. Stattdessen sind Datenträgerkontingente an einzelne NTFS-Datenträger gebunden. Jedes Laufwerk weist separate Kontingenteinstellungen auf, und die Aktionen, die Sie auf einem Datenträger ausführen, haben keine Auswirkungen auf die anderen Datenträger. Beispielsweise kann ein Computer eine einzelne Festplatte aufweisen, die in drei Datenträger aufgeteilt ist: Laufwerke C:, D: und E:. Für jedes dieser Laufwerke gelten separate Kontingenteinstellungen. Sie können Datenträgerkontingente auf den Laufwerken C: und D: aktivieren und sie auf Laufwerk E: deaktivieren. Ebenso können Sie Benutzern 50 Megabyte Speicherplatz auf Laufwerk C: zuteilen und 100 MB Speicherplatz auf Laufwerk D:.

Anders ausgedrückt, beim Verwalten von Datenträgerkontingenten wirken sich die Aktionen, die Sie auf einem Datenträger vornehmen, in keiner Weise auf die anderen Datenträger aus. Wenn Sie Benutzer A 50 MB Speicherplatz auf Laufwerk C: zuordnen, räumen sie Benutzer A damit nicht auch 50 MB Speicherplatz auf den Laufwerken D: und E: ein. Wenn Sie Datenträgerkontingente auf Laufwerk D: deaktivieren, bleiben die Kontingente auf den Laufwerken C: und E: aktiviert. Und wenn Sie - na, Sie haben's schon verstanden. Beachten Sie aber, dass Datenträgerkontingente außerdem auf Benutzerbasis konfiguriert werden. Dies werden wir ausführlicher weiter unten in diesem Artikel erörtern.

Über das Zuordnen von Speicherplatz hinaus können Sie außerdem eine Kontingentwarnstufe angeben. Dies ist das Maß an Speicherplatzausnutzung, bei dessen Erreichen eine Warnung ausgelöst wird (ein Ereignis, das im Systemereignisprotokoll aufgezeichnet wird und Sie informiert, dass ein Benutzer sich der Kontingentgrenze nähert). Ferner können Sie die Aktion bestimmen, die das System ergreift, wenn ein Benutzer das Kontingent überschreitet:

  • Überhaupt keine Aktion ergreifen.
  • Ein Ereignis im Systemereignisprotokoll aufzeichnen.
  • Dem Benutzer das Recht zum Speichern weiterer Daten verweigern, bis er oder sie genug Dateien entfernt hat, um wieder unter der Kontingentgrenze zu liegen.

WMI umfasst zwei Klassen, die zum Verwalten von Datenträgerkontingenten auf NTFS-Laufwerken verwendet werden. Die Win32_QuotaSetting-Klasse wird zum Konfigurieren von Kontingenteinstellungen für jedes Laufwerk verwendet; dies umfasst die Thematik, ob Kontingente auf dem Laufwerk aktiviert sind oder nicht sowie die für neue Benutzer angewendeten Standardkontingente und Warnstufen. Demgegenüber ist die Win32_DiskQuota-Klasse für das Verwalten einzelner Kontingenteinträge ausgelegt: Sie wird zum Auflisten, Erstellen, Ändern und Löschen von Kontingenteinträgen für einzelne Benutzer verwendet. Mithilfe dieser zwei Klassen kann nahezu jede denkbare Verwaltungsaufgabe für Datenträgerkontingente durchgeführt werden.

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).png Zum Seitenanfang

Einstellungen für das Verwalten von Datenträgerkontingenten

Für alle, die die Grundlageninformationen im vorhergehenden Abschnitt übersprungen haben, wiederholen wir jetzt: Die Win32_QuotaSetting-Klasse wird zum Festlegen von Aspekten der Art verwendet, ob Kontingente aktiviert sind oder nicht (für einzelne oder alle Laufwerke eines Computers); der für ein Laufwerk konfigurierten standardmäßigen Kontingente und der Warnstufen; und der Verwaltungsaktionen - sofern vorgesehen - die ergriffen werden, wenn ein Benutzer sein Kontingent überschreitet. Win32_QuotaSetting umfasst die in der folgenden Tabelle aufgeführten Eigenschaften. Alle dieser Eigenschaften - mit Ausnahme von VolumePath - sind lesbar und schreibbar, was bedeutet, dass Sie nicht auf das Berichten der aktuellen Werte dieser Eigenschaften beschränkt sind. Vielmehr können Skripts verwendet werden, um den Wert dieser Eigenschaften tatsächlich zu ändern.

Eigenschaft

Beschreibung

DefaultLimit

Standardlimitsatz (in KB) für Kontingente auf diesem bestimmten Datenträger.

DefaultWarningLimit

Standard-Warnstufe (in KB) für Kontingente auf diesem bestimmten Datenträger.

ExceededNotification

Zeigt an, ob Ereignisse in das Ereignisprotokoll geschrieben werden, wenn Benutzer die ihnen zugeordneten Kontingente überschreiten. (True/False)

State

Stufe der Kontingentverwaltung für diesen bestimmten Datenträger. Die gültigen Werte sind:
0: Kontingentverwaltung ist auf diesem Datenträger nicht aktiviert.
1: Kontingente werden verfolgt, aber der Limitwert wird nicht erzwungen, und Benutzer können ihre Kontingente überschreiten.
2: Kontingente werden auf diesem Datenträger verfolgt und erzwungen.

VolumePath

Name des Datenträgers, der die Datenträgerkontingente enthält. Dabei kann es sich um den Datenträgernamen oder den Datenträgerpfad (wie etwa 'D:\\') handeln. Wenn ein Pfad verwendet wird, sind die zwei umgekehrten Schrägstriche (\\) erforderlich.

WarningExceededNotification

Zeigt an, ob Ereignisse in das Ereignisprotokoll geschrieben werden, wenn die Warnstufe überschritten wird. (True/False)

Die gleichen Eigenschaften können auch den Elementen der Benutzeroberfläche im Dialogfeld Eigenschaften für NTFS-Laufwerke zugeordnet werden:

Dn151196.EFAFD63AC3DCD77EDB4A274932C2DF58(de-de,TechNet.10).png

Klicken Sie hier, um diese Grafik in Originalgröße anzuzeigen.

Welche Aktionen lassen sich nun mit Win32_QuotaSetting tatsächlich ausführen? Die häufigste Aufgabe besteht wohl einfach darin, eine Verbindung mit einem Computer herzustellen und herauszufinden, ob Datenträgerkontingente auf den NTFS-Datenträgern des betreffenden Computers aktiviert wurden oder nicht (und, falls das der Fall ist, zu bestimmen, wie die Kontingenteinstellungen konfiguriert wurden). Zum Zurückgeben von Informationen zur Kontingenteinstellung für einen Computer brauchen Sie lediglich an die Win32_QuotaSetting-Klasse zu binden und dann die Werte der einzelnen Eigenschaften zurückzugeben:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colQuotaSettings = objWMIService.ExecQuery _
    ("Select * from Win32_QuotaSetting")

For Each objQuotaSetting in colQuotaSettings
    Wscript.Echo "Default Limit: " & objQuotaSetting.DefaultLimit
    Wscript.Echo "Default Warning Limit: " &  _
        objQuotaSetting.DefaultWarningLimit    
    Wscript.Echo "Exceeded Notification: " &  _
        objQuotaSetting.ExceededNotification   
    Wscript.Echo "State: " & objQuotaSetting.State    
    Wscript.Echo "Volume Path: " & objQuotaSetting.VolumePath
    Wscript.Echo "Warning Exceeded Notification: " & _
        objQuotaSetting.WarningExceededNotification    
Next

Das vorhergehende Skript gibt Informationen zur Kontingenteinstellung für alle NTFS-Datenträger auf einem Computer zurück. Angenommen, Sie möchten nur Informationen zu den Kontingenteinstellungen für Laufwerk D:? Fügen Sie in diesem Fall der WQL-Abfrage einfach eine WHERE-Klausel hinzu, um die zurückgegebenen Daten auf Laufwerk D: zu beschränken:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colQuotaSettings = objWMIService.ExecQuery _
    ("Select * from Win32_QuotaSetting Where VolumePath = 'D:\\'")

For Each objQuotaSetting in colQuotaSettings
    Wscript.Echo "Default Limit: " & objQuotaSetting.DefaultLimit
    Wscript.Echo "Default Warning Limit: " &  _
        objQuotaSetting.DefaultWarningLimit    
    Wscript.Echo "Exceeded Notification: " &  _
        objQuotaSetting.ExceededNotification   
    Wscript.Echo "State: " & objQuotaSetting.State    
    Wscript.Echo "Volume Path: " & objQuotaSetting.VolumePath
    Wscript.Echo "Warning Exceeded Notification: " & _
        objQuotaSetting.WarningExceededNotification    
Next

Beachten Sie, dass Sie beim Angeben von Laufwerk D: einen zusätzlichen umgekehrten Schrägstrich einfügen müssen: Es heißt D:\\. Da es sich bei '\' um ein in WMI reserviertes Zeichen handelt, muss es bei jeder Verwendung in einer WHERE-Klausel „geschützt“ werden (indem ihm ein weiterer umgekehrter Schrägstrich vorangestellt wird).

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).pngZum Seitenanfang

Aktivieren und Deaktivieren von Datenträgerkontingenten

Durch Win32_QuotaSetting wird das Aktivieren und Deaktivieren von Datenträgerkontingenten einfach; die Verwendung von WMI-Skripts für diese Aufgaben ist besonders nützlich, weil diese auf Remotecomputern genau so einfach ausgeführt werden können wie auf dem lokalen Computer. Skripts stellen außerdem ein angenehmes Verfahren zum Verwalten von Datenträgerkontingenten dar, weil sie Flexibilität beim Aktivieren von Datenträgerkontingenten für einen einzelnen Datenträger oder für jeden Datenträger auf dem Computer mit sich bringen. Die Entscheidung liegt ganz bei Ihnen.

Datenträgerkontingente können durch Ändern des Werts der State-Eigenschaft ein- und ausgeschaltet werden. State nimmt drei mögliche Werte an:

  • 0: Datenträgerkontingente sind ausgeschaltet.
  • 1: Datenträgerkontingente werden nachverfolgt, jedoch nicht erzwungen. Anders ausgedrückt, das Betriebssystem hält Kontingentinformationen kontinuierlich fest, den Benutzern wird das Überschreiten ihrer Kontingentgrenzen jedoch nach Belieben erlaubt.
  • 2: Datenträgerkontingente werden nachverfolgt und erzwungen. In diesem Fall wird den Benutzern das Überschreiten ihrer Datenträgerkontingente nicht erlaubt. Wenn ein Benutzer versucht, eine Datei zu speichern, mit der er seine Kontigentgrenze überschreiten würde, wird ihm der Zugriff aufgrund von unzureichendem Speicherplatz verweigert.

Mit dem folgenden Skript wird ein Computer für das Nachverfolgen und Erzwingen von Datenträgerkontingenten für Laufwerk C: auf einem Computer konfiguriert:

Const ENFORCE_QUOTAS = 2

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
    ("Select * from Win32_QuotaSetting Where VolumePath = 'C:\\'")

For Each objDisk in colDisks
    objDisk.State = ENFORCE_QUOTAS
    objDisk.Put_
Next

Das Skript beginnt mit der Definition einer Konstanten - ENFORCE_QUOTAS - der der Wert '2' zugewiesen wird. Das Skript stellt eine Verbindung mit dem WMI-Dienst her und ruft dann die Kontingenteinstellungen für Laufwerk C: mithilfe dieser Codezeile ab:

Set colDisks = objWMIService.ExecQuery _
    ("Select * from Win32_QuotaSetting Where VolumePath = 'C:\\'")

Zum Aktivieren von Kontingenten legt das Skript den Wert der State-Eigenschaft auf ENFORCE_QUOTAS fest und ruft dann die Methode Put_ auf, um diese Änderung in das Betriebssystem zu schreiben.

Wie gehen Sie nun vor, wenn Sie Datenträgerkontingente für ein Laufwerk deaktivieren möchten? In diesem Fall müssen Sie lediglich den Wert der State-Eigenschaft auf '0' festlegen. Erstellen Sie zu diesen Zweck eine Konstante mit dem Namen DISABLE_QUOTAS, legen Sie den Wert dieser Konstanten auf '0' fest, und legen Sie anschließend den Wert der State-Eigenschaft auf DISABLE_QUOTAS fest. Das fertige Skript sieht ziemlich genau so aus:

Const DISABLE_QUOTAS = 0

StrComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
    ("Select * from Win32_QuotaSetting Where VolumePath = 'C:\\'")

For Each objDisk in colDisks
    objDisk.State = DISABLE_QUOTAS
    objDisk.Put_
Next

Beachten Sie, dass vorhandene Kontingentinformationen durch das Deaktivieren von Datenträgerkontingenten nicht verworfen werden. So sind alle Kontingenteinstellungen, die Sie vorgenommen haben, und alle Kontingenteinträge, die Sie erstellt haben, immer noch vorhanden. Diese Einstellungen werden jedoch nicht erzwungen, und die Speicherplatznutzung für einzelne Benutzer mit einem Kontingenteintrag wird nicht aktualisiert. Wenn Sie Datenträgerkontingente zu einem späteren Zeitpunkt wieder aktivieren, werden diese früheren Einstellungen und Kontingenteinträge automatisch wiederhergestellt. Sie brauchen sie nicht neu zu erstellen. Kein Schritt zuviel, wie wir Jungs aus der Skriptabteilung das gerne ausdrücken.

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).pngZum Seitenanfang

Ändern von Datenträgerkontingent-Einstellungen

Eine der wirklich angenehmen Seiten der Win32_QuotaSetting-Klasse liegt in der Tatsache, dass die meisten der Eigenschaften les- und schreibbar sind. Anders ausgedrückt, Skripts können nicht nur verwendet werden, um die Werte von Eigenschaften wie DefaultLimit und DefaultWarningLimit abzurufen, sonden auch, um diese Eigenschaftswerte zu ändern.

Beispielsweise ändert dieses Skript die DefaultLimit- und DefaultWarningLimit-Einstellungen für alle NTFS-Laufwerke auf einem Computer:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colQuotaSettings = objWMIService.ExecQuery _
    ("Select * from Win32_QuotaSetting")

For Each objQuotaSetting in colQuotaSettings
    objQuotaSetting.DefaultLimit = 10000000
    objQuotaSetting.DefaultWarningLimit = 9000000
    objQuotaSetting.Put_
Next

Wie zu ersehen ist, wird einfach ein neuer Wert (in KB) zugewiesen und anschließend die Methode Put_ aufgerufen, um diese neuen Kontingenteinstellungen in das Betriebssystem zu schreiben. Beachten Sie, dass bei diesem Vorgehen die revidierten Kontingenteinstellungen nur für neue Benutzer gelten; diese neuen Einstellungen gelten nicht für Benutzer, die bereits über Datenträgerkontingent-Einträge auf dem Laufwerk verfügen. Angenommen, Sie verfügen über drei Benutzer mit Einträgen für Datenträgerkontingente auf einem Laufwerk:

Benutzer

Kontingentgrenze

Warnstufe

KMeier

100 MB

90 MB

PAckermann

200 MB

180 MB

RWilliams

400 MB

350 MB

Und nehmen Sie nun ferner an, Sie führen ein Skript aus, das die standardmäßigen Kontingenteinstellungen auf eine Kontingentgrenze von 50 MB und eine Warnstufe von 40 MB ändert. Diese Werte werden auf jeden neuen Benutzer angewendet, der eine Datei speichert oder einen Ordner auf dem Laufwerk erstellt. Die Kontingenteinstellungen für die drei Benutzer, die in der vorstehenden Tabelle aufgelistet sind, sind davon jedoch nicht betroffen. Sie behalten ihre vorhandenen Einstellungen bei, obwohl sie alle Kontingentgrenzen weit über dem vorgeschriebenen Maximalwert von 50 MB besitzen. Aber das ist so in Ordnung: Schließlich sind Kontingenteinstellungen Standardwerte, die auf alle neuen Benutzer angewendet werden, sofern Sie nichts anderes angeben. Anders ausgedrückt, es ist vollkommen zulässig, einzelnen Benutzern Kontingentwerte über oder unter den Standardwerten zuzuweisen.

Aber wie gehen Sie vor, wenn Sie die gleichen Werte auf diese drei Benutzer anwenden wollen? In diesem Fall müssen Sie die Werte der einzelnen Kontingenteinträge für jeden der Benutzer ändern. Und das bringt uns - ganz zufällig - zum nächsten Absatz.

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).pngZum Seitenanfang

Verwalten von Datenträgerkontingent-Einträgen für einzelne Benutzer

Immer, wenn ein neuer Benutzer eine Datei auf einem Laufwerk speichert, auf dem Datenträgerkontingente aktiviert wurden, wird ein neuer Kontingenteintrag für den betreffenden Benutzer erstellt. In diesem Kontingenteintrag werden die Kontingentgrenzen und Warnstufen protokolliert, die dem Benutzer zugeordnet wurden, sowie der aktuell von diesem Benutzer beanspruchte Speicherplatz. Der Kontingenteintrag weist deutliche Ähnlichkeit mit der WMI-Klasse Win32_DiskQuota auf. Diese Klasse kann zum Erstellen, Löschen und Ändern von einzelnen Kontingenteinträgen sowie zum Berichten über einzelne Kontingenteinträge verwendet werden. Die Eigenschaften der Win32_DiskQuota-Klasse sind in der folgenden Tabelle dargestellt:

Eigenschaft

Beschreibung

DiskSpaceUsed

Anzahl der von diesem bestimmten Benutzer aktuell beanspruchten Kilobytes (KB).

Limit

Für diesen bestimmten Benutzer festgelegter Grenzwert. Diese Eigenschaft ist les- und schreibbar.

QuotaVolume

Datenträger, auf dem der Kontingenteintrag gespeichert ist.

Status

Aktueller Status des Datenträgerkontingents. Die gültigen Werte sind:
0. OK: Der Benutzer befindet sich innerhalb der zugewiesenen Kontingentgrenze.
1. Warnung: Der Benutzer hat die Warnstufe überschritten, jedoch noch nicht die zugewiesene Kontingentgrenze.
2. Überschritten: Der Benutzer hat die zugewiesene Kontingentgrenze überschritten.

User

Der dem Kontingenteintrag zugeordnete Benutzer.

WarningLimit

Für diesen bestimmten Benutzer festgelegte Warnstufe. Diese Eigenschaft ist les- und schreibbar.

Die gleichen Eigenschaften können auch den Elementen der Benutzeroberfläche im Dialogfeld Kontingenteinträge zugeordnet werden:

Dn151196.A716D688926F1841AA6D62840B00A41E(de-de,TechNet.10).png
Klicken Sie hier, um diese Grafik in Originalgröße anzuzeigen.

Hinweis. So gelangen Sie zum Dialogfeld Kontingenteinträge: Klicken Sie im Ordner Arbeitsplatz mit der rechten Maustaste auf das gewünschte Festplattenlaufwerk, und klicken Sie dann auf Eigenschaften. Klicken Sie im Dialogfeld Eigenschaften auf die Registerkarte Kontingent, und klicken Sie dann auf Kontingenteinträge.

Falls Sie sich jetzt über die Vorgehensweise wundern: Datenträgerkontingente beziehen sich auf die Dateien und Ordner im Besitz eines Benutzers. (Dateien und Ordner können übrigens nur von Benutzern besessen werden, nicht von Gruppen. Dies ist der Grund dafür, dass Datenträgerkontingente - mit einer Ausnahme - nur Benutzern zugeordnet werden können). Hier sind ein paar andere in diesem Zusammenhang interessierende Anmerkungen:

  • Datenträgerkontingente basieren auf Dateibesitzerrechten. Angenommen, Benutzer A erstellt eine neue Datei ohne Inhalt. Benutzer A wird daher mit 0 MB Speicherplatz belastet. Nehmen wir aber an, Benutzer B - der über Lese-/Schreibberechtigung für die Datei verfügt - öffnet die Datei und füllt sie mit aus dem Internet gedownloadeten Bildern. Die Dateigröße wächst auf 40 MB an, die vollständig Benutzer A, dem Besitzer der Datei belastet werden.
    Einige Anwendungen ändern natürlich die Dateibesitzrechte automatisch auf den Benutzer, der die Datei zuletzt geändert hat. In diesem Fall werden die 40 MB Speicherplatz dem Benutzer B belastet, jedoch nur, weil Benutzer B jetzt der Besitzer der Datei ist.
  • Datenträgerkontingente basieren auf der unkomprimierten Größe von Dateien. Das Komprimieren einer Datei ändert nicht die Menge an Speicherplatz, die dem Dateibesitzer angerechnet wird. (Ja, wir kennen das Problem: Wir möchten uns auch so herausmogeln. Es funktioniert aber nicht).
  • Datenträgerkontingente sind schlau: Wenn Kontingente aktiviert sind, basiert die Menge des an einen Benutzer gemeldeten Speicherplatzes auf dessen Kontingentgrenze, nicht auf der Laufwerksgröße. Nehmen wir zum Beispiel an, dass einem Benutzer 1 Gigabyte an Kontingentspeicherplatz auf einem 50 GB-Laufwerk eingeräumt wurde. Wenn der Benutzer unmittelbar anschließend die Menge des auf dem Laufwerk verfügbaren freien Speicherplatzes überprüft, wird ihm mitgeteilt, dass 1 GB frei ist; anders ausgedrückt, die für den Benutzer verfügbare Menge an freiem Speicherplatz basiert auf seinem Kontingent. Der Benutzer erfährt nie von den weiteren 50 GB Festplattenplatz auf dem Laufwerk.
  • Standardmäßig steht Administratoren unbeschränkt Speicherplatz auf einem Laufwerk zur Verfügung (nun ja, natürlich eingeschränkt durch den tatsächlich vorhandenen Platz). Tatsächlich wird beim Aktivieren von Datenträgerkontingenten die Gruppe Administratoren automatisch der Kontingenteintragstabelle hinzugefügt, und ihr wird unbeschränkt Speicherplatz zugeordnet. Vermutlich ist es klug, diese Standardeinstellung nicht zu ändern. Wenn Sie die Gruppe Administratoren aus der Kontingenteintragstabelle entfernen oder den für Administratoren verfügbaren Speicherplatz einschränken, können Sie ihre Fähigkeit, den Computer zu verwalten, ernsthaft behindern.

Hinweis

Hinweis
Jede von einem Administrator erstellte Datei ist im Besitz der Gruppe Administratoren, nicht im Besitz des einzelnen Administrators. Dies ist die eine Ausnahme, die wir zuvor erwähnt haben. Ein Datenträgerkontigent-Eintrag kann für die Gruppe Administratoren konfiguriert werden, jedoch für keine andere Gruppe. (Natürlich ist das ungerecht. Aber wir finden in unserer Liste alter Sprichwörter auch nirgends einen Eintrag für „Das Leben ist gerecht“).

Wie bereits zuvor festgestellt, besteht eins der größeren Hindernisse beim Implementieren von Datenträgerkontingenten in Windows 2000 im Fehlen sinnvoller Verwaltungstools. Angenommen, Sie möchten einen Bericht generieren, der alle Datenträgerkontingente für alle Laufwerke auf einem Computer anzeigt. In Windows 2000 existiert dafür kein Verfahren. Zum Einen sollten Sie die Verwendung des Dienstprogramms Disk Quota Entries nicht einmal in Erwägung ziehen; es besteht keine Möglichkeit, aus dem Tool zu drucken oder auch nur, Informationen in einer Textdatei zu speichern. Zum Andern können Sie ein Skript unter Verwendung des Shell-Objekts erstellen, Sie müssen aber eine erhebliche Menge Code schreiben, um die Laufwerke auf dem Computer auch nur zu identifizieren und eine Verbindung mit ihnen herzustellen. Ziemlicher Aufwand, und vielleicht nicht angemessen. (Das ist die Kehrseite an diesem „Ohne Fleiß kein Preis“.)

Und gestaltet sich das in Windows 2003 etwa einfacher? Nun ja, hier folgt ein Skript, das genau das ausführt: Es liefert Informationen über alle Kontingenteinträge für alle Laufwerke auf einem Computer zurück, und das erledigt es mit gerade mal ein paar Codezeilen:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colDiskQuotas = objWMIService.ExecQuery("Select * from Win32_DiskQuota")

For Each objQuota in colDiskQuotas
    Wscript.Echo "Disk Space Used: " & objQuota.DiskSpaceUsed
    Wscript.Echo "Limit: " & objQuota.Limit   
    Wscript.Echo "Quota Volume: " & objQuota.QuotaVolume     
    Wscript.Echo "Status: " & objQuota.Status 
    Wscript.Echo "User: " & objQuota.User     
    Wscript.Echo "Warning Limit: " & objQuota.WarningLimit
    Wscript.Echo
Next

Hübsch, nicht wahr? Es kommt aber noch besser. Da es sich um WMI handelt, können Abfragen erstellt werden, die eine stärker zielgerichtete Sammlung von Informationen zurückliefern. Vielleicht wünschen Sie eine Auflistung aller Benutzer, die ihre Kontingentgrenze überschritten haben (also alle Kontingenteinträge mit dem Wert '2' für die Status-Eigenschaft). Verwenden Sie in diesem Fall einfach eine WQL-Abfrage wie diese:

Set colDiskQuotas = objWMIService.ExecQuery _
    ("Select * from Win32_DiskQuota Where Status = 2")

Und hier folgt eine weitere Beispielabfrage, die eine Liste aller Benutzer zurückliefert, die - unabhängig von ihren Kontingenteinstellungen - mehr als 1.000.000 KB Speicherplatz verbraucht haben:

Set colDiskQuotas = objWMIService.ExecQuery _
    ("Select * from Win32_DiskQuota Where DiskSpaceUsed > 1000000")

Wiederum wird sichtbar, warum Skripting ein so elegantes Verfahren zum Verwalten von Thematiken in der Art von Datenträgerkontingenten darstellt. Mit relativ geringem Zeitaufwand können Sie ein Verwaltungswerkzeug erstellen, das genau so funktioniert, wie Sie es benötigen.

A propos, wenn ein Benutzer seine Kontingentgrenze erreicht, wird ein Ereignis im Systemereignisprotokoll auf dem Computer aufgezeichnet, auf dem die Kontingentüberschreitung stattfand. Allerdings wird der Benutzer davon in keiner Weise in Kenntnis gesetzt. Der Benutzer wird nie erfahren, dass er sich seiner Kontingentgrenze nähert, bis er versucht, eine Datei zu speichern und ihm der Zugriff verweigert wird, weil er nicht über ausreichend Speicherplatz verfügt.

Warum erwähnen wir das? Nun ja, Sie können einfach ein Skript erstellen, das eine Liste der Benutzer zurückgibt, die ihre Warnstufe oder Kontingentgrenze überschritten haben, und dieses Skript dann eine E-Mail an jeden Benutzer senden lassen, die ihn von der Situation in Kenntnis setzt und mögliche Lösungen zum Freigeben von zusätzlichem Speicherplatz vorschlägt. Versuchen Sie so etwas mal mit den im Betriebssystem eingebauten Tools zur Kontingentverwaltung.

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).pngZum Seitenanfang

Abrufen eines einzelnen Datenträgerkontingent-Eintrags

Es sollte inzwischen offensichtlich geworden sein, dass durch die neuen WMI-Klassen in Windows Server 2003 und Windows XP das Verwalten von Datenträgerkontingent-Einstellungen und Kontingenteinträgen insgesamt sehr einfach wird, und zwar über alle Laufwerke auf einem Computer. Es ist jedoch auch möglich, einzelne Kontingenteinträge zu verwalten. Beispielsweise ruft das folgende Skript - das, zugegebenermaßen, etwas abschreckend wirkt - die Kontingentgrenze für den Benutzer 'fabrikam\kenmyer' auf Laufwerk C: eines Computers ab:

strComputer = "."

strDrive = "C:"
strDomain = "fabrikam"
strUser = "kenmyer"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objQuota = objWMIService.Get _
    ("Win32_DiskQuota.QuotaVolume='Win32_LogicalDisk.DeviceID=" & chr(34) & strDrive & chr(34) & "'," & _
        "User='Win32_Account.Domain=" & chr(34) & strDomain & chr(34) & _
            ",Name=" & chr(34) & strUser & chr(34) & "'")

Wscript.Echo objQuota.Limit

Tatsächlich ist der größte Teil des Skripts ziemlich geradlinig, mit einer auffälligen Ausnahme: der WQL-Abfrage, die zum Abrufen des Kontingenteintrags verwendet wird. Wie Sie vermutlich bemerkt haben, ist die Abfrage mit kaufmännischen 'Und'-Zeichen, einfachen Anführungszeichen, doppelten Anführungszeichen und jeder Menge Interpunktion gespickt. Das ist kein schöner Anblick (auch wenn Schönheit im Auge des Beschauers liegt), aber das ist eben die Art, wie einzelne Kontingenteinträge von WMI verfolgt werden. Zum Beispiel sehen Instanzen von Kontingenteinträgen in Wbemtest so aus:

Dn151196.2BA77D3879157780C8C372B4C26BD807(de-de,TechNet.10).png
Klicken Sie hier, um diese Grafik in Originalgröße anzuzeigen.

Anders ausgedrückt, ob es einem nun gefällt oder nicht (und, zugegeben, es gefällt eher nicht), die Schlüsseleigenschaft für einen Datenträgerkontingent-Eintrag ist eine Zusammensetzung der Klassen Win32_DiskQuota, Win32_LogicalDisk und Win32_Account. Es besteht auch keine Möglichkeit, dies zu umgehen.

Sie sollten sich deswegen aber keine Gedanken machen. Das vorhergehende Skript wurde so entwickelt, dass es für Sie einfach zu ändern und zu verwenden ist. Die WQL-Abfrage sieht zum Teil deshalb so kryptisch aus, weil wir für das Laufwerk, den Benutzer und die Benutzerdomäne Variablen verwendet haben. Zum Verwenden des Skripts müssen Sie lediglich den drei Variablen, die diese drei Eigenschaften darstellen, die passenden Werte zuweisen:

strDrive = "C:"
strDomain = "fabrikam"
strUser = "kenmyer"

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).pngZum Seitenanfang

Ändern eines Datenträgerkontingent-Eintrags

Sowohl die Eigenschaft Limit als auch die Eigenschaft WarningLimit ist les- und schreibbar: Das bedeutet, Sie können ein Skript verwenden, um die Werte jeder dieser Eigenschaften zu ändern. Beispielsweise folgt hier ein Skript, das den Limit-Wert auf Laufwerk C: für den Benutzer 'fabrikam\kenmyer' ändert:

strComputer = "."

strDrive = "C:"
strDomain = "fabrikam"
strUser = "kenmyer"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objQuota = objWMIService.Get _
    ("Win32_DiskQuota.QuotaVolume='Win32_LogicalDisk.DeviceID=" & chr(34) & strDrive & chr(34) & "'," & _
        "User='Win32_Account.Domain=" & chr(34) & strDomain & chr(34) & _
            ",Name=" & chr(34) & strUser & chr(34) & "'")

objQuota.Limit = 11111111
objQuota.Put_

Achten Sie wie üblich darauf, nach dem Zuweisen neuer Werte die Methode Put_ aufzurufen. Wenn Sie Put_ nicht aufrufen, wird kein Fehler generiert; allerdings werden auch keine Änderungen am Kontingenteintrag vorgenommen.

Natürlich können Sie auch den Wert von Limit für alle Benutzer auf dem Laufwerk ändern. Hier ist ein Skript, das genau das ausführt:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colDiskQuotas = objWMIService.ExecQuery _
    ("Select * from Win32_DiskQuota Where QuotaVolume = 'C:\\'")

For Each objQuota in colDiskQuotas
    objQuota.Limit = 11111111
    objQuota.Put_
Next

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).pngZum Seitenanfang

Löschen eines Datenträgerkontingent-Eintrags

Manchmal umfasst die Verwaltung von Datenträgerkontingenten nicht mehr als das Lösen einiger einfacher mathematischer Gleichungen. Angenommen, Sie verfügen über 100 Benutzer und über 100 GB verfügbaren Speicherplatz. Falls Sie dies wünschen, können Sie einfach den verfügbaren Speicherplatz durch die Anzahl der Benutzer dividieren und so jedem Benutzer 1 GB Speicherplatz zuordnen.

Natürlich ist diese Art von Berechnung nur hilfreich, wenn die fraglichen Zahlen auch zutreffen. Wenn Sie tatsächlich 50 Benutzer haben, teilen Sie jedem zu wenig zu; wenn Sie 200 Benutzer betreuen, weisen Sie mehr Speicherplatz zu, als tatsächlich vorhanden ist. Daher müssen Sie sowohl den verfügbaren Speicherplatz als auch die Anzahl der Kontingenteinträge auf dem Laufwerk stets im Auge behalten. Und zum letztgenannten Zweck müssen Sie ungültige Kontingenteinträge regelmäßig und auf Routinebasis löschen; beispielsweise Kontingenteinträge für Benutzer, die nicht mehr im Unternehmen beschäftigt sind oder keinen Zugriff mehr auf das Laufwerk haben. (Dies muss manuell ausgeführt werden, weil Kontingenteinträge nicht beim Löschen eines Benutzerkontos automatisch mit gelöscht werden). Glücklicherweise handelt es sich hier um eine weitere Aufgabe, die mithilfe eines Skripts durchgeführt werden kann.

Zum Löschen eines Kontingenteintrags müssen Sie lediglich eine Verbindung mit dem betreffenden Eintrag herstellen und anschließend die Methode Delete_ aufrufen. Das Aufrufen der Methode Put_, um die Änderungen in das Betriebssystem zu schreiben, ist nicht erforderlich. Vielmehr wird der Eintrag gelöscht, sobald Sie Delete_ aufrufen.

Hier folgt ein Skript, das den Kontingenteintrag auf Laufwerk C: für den Benutzer 'fabrikam\kenmyer' löscht:

strComputer = "."

strDrive = "C:"
strDomain = "fabrikam"
strUser = "kenmyer"

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objQuota = objWMIService.Get _
    ("Win32_DiskQuota.QuotaVolume='Win32_LogicalDisk.DeviceID=" & chr(34) & strDrive & chr(34) & "'," & _
        "User='Win32_Account.Domain=" & chr(34) & strDomain & chr(34) & _
            ",Name=" & chr(34) & strUser & chr(34) & "'")

objQuota.Delete_

Beachten Sie, dass sich das Löschen eines Kontingenteintrags nicht auf die Fähigkeit des Benutzers auswirkt, Dateien auf dem Laufwerk zu speichern. Wenn Sie z. B. den Kontingenteintrag für Ken Myer löschen, und Ken ein paar Momente später versucht, eine Datei auf dem betreffenden Laufwerk zu speichern - wird Ken der Zugriff auf das Laufwerk verweigert? Nein. Er kann die Datei speichern, und ein neuer Kontingenteintrag wird für ihn erstellt. Wenn Sie einen Benutzer am Speichern von Dateien auf einem Laufwerk hindern möchten, müssen Sie dafür NTFS-Berechtigungen anstelle von Datenträgerkontingenten verwenden.

Bedenken Sie außerdem, dass keine Kontingenteinträge von Benutzern gelöscht werden können, die noch im Besitz von Dateien auf dem Laufwerk sind. Stattdessen müssen Sie diese Dateien löschen, verschieben oder ihren Besitz übernehmen, bevor der Kontingenteintrag gelöscht werden kann.

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).pngZum Seitenanfang

Erstellen eines neuen Datenträgerkontingent-Eintrags

Wie bereits zuvor festgestellt, müssen Sie nicht für jeden neuen Benutzer, der möglicherweise eine Datei auf einem Laufwerk speichert, einen neuen Kontingenteintrag erstellen. Das ist der Grund für die Existenz von Standardkontingenten und Standardwarnstufen. Wenn ein Benutzer eine Datei speichert, schlägt das Betriebssystem den Benutzer und die ihm zugeordneten Kontingenteinstellungen nach. Wenn für den Benutzer kein Kontingenteintrag vorhanden ist, erstellt das Betriebssystem automatisch einen neuen Kontingenteintrag auf der Grundlage der Standardeinstellungen. Dies vereinfacht die Kontingentverwaltung erheblich.

Es kann jedoch Fälle geben, in denen die Anwendung der Standardeinstellungen auf einen Benutzer nicht erwünscht ist. Beispielsweise werden Sie einem Grafiker vielleicht mehr Speicherplatz zuteilen wollen als einem Mitarbeiter am Empfang. In einem solchen Fall sollten Sie warten, bis der Grafiker eine Datei auf dem Datenträger gespeichert - und so einen neuen Kontingenteintrag mit den Standardeinstellungen erstellt - hat und dann ein Skript verwenden, um diese Einstellungen zu ändern. Alternativ können Sie sich eventuell Zeit und Umstände ersparen, wenn Sie ein Skript zum Erstellen eines Kontingenteintrags im Vorhinein verwenden, der dem betreffenden Benutzer von Anfang an zusätzlichen Speicherplatz einräumt.

Seien Sie wiederum gewarnt: Das Skript zum Erstellen eines neuen Kontingenteintrags sieht etwas verrückt aus. Das Beispielskript wurde jedoch ebenfalls mit der Absicht entwickelt, es für Sie einfach verwendbar zu machen: Sie müssen lediglich die passenden Werte für das Laufwerk, den Benutzernamen und die Domäne zuweisen und können das Skript so wie es ist verwenden.

strComputer = "."

strDrive = "C:"
strDomain = "fabrikam"
strUser = "kenmyer"


Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set objAccount = objWMIService.Get _
    ("Win32_Account.Domain='" & strDomain & "',Name='" & strUser & "'")
Set objDisk = objWMIService.Get _
    ("Win32_LogicalDisk.DeviceID='" & strDrive & "'")
Set objQuota = objWMIService.Get _
    ("Win32_DiskQuota").SpawnInstance_

objQuota.QuotaVolume = objDisk.Path_.RelPath
objQuota.User = objAccount.Path_.RelPath
objQuota.Limit = 10485760
objQuota.WarningLimit = 8388608
objQuota.Put_

Es ist uns bewusst: Dieses Skript ist etwas komplizierter als die, mit denen wir uns bisher befasst haben. Das ist zu einem großen Teil in dem Umstand begründet, dass wir Objektverweise sowohl für das Benutzerkonto (objAccount) als auch für das Laufwerk erstellen müssen, auf dem der Kontingenteintrag erstellt werden soll (objDisk). Das geschieht in diesen zwei Codezeilen:

Set objAccount = objWMIService.Get _
    ("Win32_Account.Domain='" & strDomain & "',Name='" & strUser & "'")
Set objDisk = objWMIService.Get _
    ("Win32_LogicalDisk.DeviceID='" & strDrive & "'")

Sobald wir über diese zwei Objektverweise verfügen, können wir anschließend die Methode SpawnInstance_ verwenden, um einen leeren Kontingenteintrag zu erstellen. Danach werden lediglich Werte für die QuotaVolume-, die User-, die Limit- und die WarningLimit-Eigenschaft angegeben. Der etwas trickreiche Teil ist der, in dem wir die Eigenschaft Path_.RelPath der zwei Objektverweise zum Einstellen der Werte für die Eigenschaften QuotaVolume und User verwenden. Die Path_.RelPath-Werte für das Datenträgerlaufwerk und den Benutzer sehen ungefähr so aus:

Win32_LogicalDisk.DeviceID="C:"
Win32_UserAccount.Domain="fabrikam",Name="kenmyer"

Wir verwenden die Path_.RelPath-Eigenschaft aus Gründen des Komforts: Dies ist etwas sauberer und aufgeräumter als die Verwendung einer weiteren verketteten Zeichenfolge mit kaufmännischen Und-Zeichen, einfachen Anführungszeichen und doppelten Anführungszeichen.

Und natürlich verwenden wir anschließend die Put_-Methode zum Erstellen des Kontingenteintrags.

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).pngZum Seitenanfang

Weitere Informationen

Sie kennen ja das alte Sprichwort: Alles hat einmal ein Ende, und das gilt auch für diesen Artikel. Wenn Sie Fragen oder Kommentare zur Verwendung von Skripts für das Verwalten von Datenträgerkontingenten haben, senden Sie sie an scripter@microsoft.com (in Englisch). Inzwischen widmen wir uns der Widerlegung des alten Sprichworts, dass man nicht alles haben kann. Wünschen Sie uns Glück.

Dn151196.590B5404BFEA7F06684DB47B00539355(de-de,TechNet.10).pngZum Seitenanfang

| Home | Technische Artikel | Community