Set-Acl

Ändert die Sicherheitsbeschreibung einer angegebenen Ressource, z. B. einer Datei oder eines Registrierungsschlüssels.

Syntax

Set-Acl [-Path] <string[]> [-AclObject] <ObjectSecurity> [-Exclude <string[]>] [-Filter <string>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

Beschreibung

Mit dem Cmdlet "Set-Acl" wird die Sicherheitsbeschreibung einer angegebenen Ressource geändert, z. B. einer Datei oder eines Registrierungsschlüssels, sodass sie mit den Werten in der angegebenen Sicherheitsbeschreibung übereinstimmen.

Zur Verwendung von Set-Acl bezeichnen Sie mit dem Path-Parameter die Ressource, deren Sicherheitsbeschreibung Sie ändern möchten, und geben Sie über den AclObject-Parameter eine Sicherheitsbeschreibung mit Werten an, die Sie anwenden möchten. Set-Acl verwendet den Wert des AclObject-Parameters als Modell und ändert die Werte in der Sicherheitsbeschreibung der Ressource so, dass diese mit den Werten im AclObject-Parameter übereinstimmen.

Parameter

-AclObject <ObjectSecurity>

Gibt eine Zugriffssteuerungsliste mit den gewünschten Eigenschaftenwerten an. Set-Acl ändert die Zugriffssteuerungsliste der vom Path-Parameter angegebenen Ressource, sodass sie den Werten im angegebenen Sicherheitsobjekt entspricht.

Sie können die Ausgabe des Befehls "Get-Acl" in einer Variablen speichern und die Variable mit dem AclObject-Parameter übergeben, oder Sie können den Befehl "Get-Acl" eingeben.

Erforderlich?

true

Position?

2

Standardwert

Pipelineeingaben akzeptieren?

true (ByValue)

Platzhalterzeichen akzeptieren?

false

-Exclude <string[]>

Lässt die angegebenen Elemente aus. Der Path-Parameter wird durch den Wert dieses Parameters qualifiziert. Geben Sie ein Pfadelement oder -muster wie "*.txt" ein. Platzhalter sind zulässig.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Filter <string>

Gibt einen Filter im Format oder in der Sprache des Anbieters an. Der Path-Parameter wird durch den Wert dieses Parameters qualifiziert. Die Syntax des Filters einschließlich der Verwendung von Platzhaltern ist vom Anbieter abhängig. Filter sind effizienter als andere Parameter, da sie beim Abrufen der Objekte vom Anbieter angewendet werden und die Objekte nicht erst nach dem Abrufen von Windows PowerShell gefiltert werden.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Include <string[]>

Ändert nur die angegebenen Elemente. Der Path-Parameter wird durch den Wert dieses Parameters qualifiziert. Geben Sie ein Pfadelement oder -muster wie "*.txt" ein. Platzhalter sind zulässig.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-PassThru

Gibt ein Objekt zurück, das die Sicherheitsbeschreibung darstellt. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-Path <string[]>

Gibt die Ressource an, deren Sicherheitsbeschreibung geändert werden soll. Geben Sie den Pfad zu einer Ressource ein, z. B. den Pfad zu einer Datei oder einem Registrierungsschlüssel. Platzhalter sind zulässig.

Wenn Sie ein Sicherheitsobjekt an Set-Acl übergeben (mit dem AclObject-Parameter oder durch Übergabe eines Objekts von Get-Acl an Set-Acl) und den Path-Parameter (Name und Wert) auslassen, verwendet Set-Acl den Pfad aus dem Sicherheitsobjekt.

Erforderlich?

true

Position?

1

Standardwert

Pipelineeingaben akzeptieren?

true (ByPropertyName)

Platzhalterzeichen akzeptieren?

false

-Confirm

Fordert Sie vor der Ausführung des Befehls zur Bestätigung auf.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-WhatIf

Beschreibt die Auswirkungen einer Ausführung des Befehls, ohne den Befehl tatsächlich auszuführen.

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

-UseTransaction

Schließt den Befehl in die aktive Transaktion ein. Dieser Parameter ist nur gültig, wenn eine Transaktion ausgeführt wird. Weitere Informationen finden Sie unter "about_Transactions".

Erforderlich?

false

Position?

named

Standardwert

Pipelineeingaben akzeptieren?

false

Platzhalterzeichen akzeptieren?

false

<CommonParameters>

Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.

Eingaben und Ausgaben

Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.

Eingaben

System.Security.AccessControl.ObjectSecurity

Sie können eine Sicherheitsbeschreibung über die Pipeline an Set-Acl übergeben.

Ausgaben

Keiner oder Sicherheitsobjekt

Standardmäßig generiert Set-Acl keine Ausgabe. Wenn Sie den -Passthru-Parameter verwenden, wird jedoch ein Sicherheitsobjekt generiert. Der Sicherheitsobjekttyp hängt vom Ressourcentyp ab.

Hinweise

Das Cmdlet "Set-Acl" wird von den Windows PowerShell-Dateisystem- und Registrierungsanbietern unterstützt. Es kann somit verwendet werden, um die Sicherheitsbeschreibungen von Dateien, Verzeichnissen und Registrierungsschlüsseln zu ändern.

Um für einen Parameter mehrere Werte anzugeben, trennen Sie diese durch Kommas. Beispiel: "<Parametername> <Wert1>, <Wert2>".

Beispiel 1

C:\PS>$DogACL = get-acl c:\dog.txt

C:\PS>set-acl -path C:\cat.txt -AclObject $DogACL

Beschreibung
-----------
Mit diesen Befehlen werden die Werte aus der Sicherheitsbeschreibung der Datei "dog.txt" in die Sicherheitsbeschreibung der Datei "cat.txt" kopiert. Wenn die Ausführung der Befehle abgeschlossen ist, sind die Sicherheitsbeschreibungen der Datei "dog.txt" und der Datei "cat.txt" identisch.

Im ersten Befehl wird das Cmdlet "Get-Acl" verwendet, um die Sicherheitsbeschreibung der Datei "Dog.txt" abzurufen. Mit dem Zuweisungsoperator (=) wird die Sicherheitsbeschreibung im Wert der Variablen "$DogACL" gespeichert. 

Im zweiten Befehl wird "Set-Acl" verwendet, um die Werte in der ACL der Datei "Cat.txt" in die von "$DogACL" zu ändern.

Der Wert des Path-Parameters ist der Pfad zur Datei "cat.txt". Der Wert des AclObject-Parameters ist die Modell-ACL, in diesem Fall also die ACL der Datei "dog.txt", die in der Variablen "$DogACL" gespeichert wurde.





Beispiel 2

C:\PS>get-acl c:\dog.txt | set-acl -path C:\cat.txt

Beschreibung
-----------
Dieser Befehl unterscheidet sich von dem Befehl im vorherigen Beispiel darin, dass ein Pipelineoperator verwendet wird, um die im Befehl "Get-Acl" abgerufene Sicherheitsbeschreibung an den Befehl "Set-Acl" zu senden.

Im ersten Befehl wird das Cmdlet "Get-Acl" verwendet, um die Sicherheitsbeschreibung der Datei "Dog.txt" abzurufen. Der Pipelineoperator (|) übergibt ein Objekt, das die Sicherheitsbeschreibung der Datei "Dog.txt" darstellt, an den Befehl "Set-Acl".

Im zweiten Befehl wird Set-Acl verwendet, um die Sicherheitsbeschreibung aus "Dog.txt" auf "Cat.txt" anzuwenden. Wenn die Ausführung des Befehls abgeschlossen ist, sind die ACLs der Datei "dog.txt" und der Datei "cat.txt" identisch.





Beispiel 3

C:\PS>$newACL = get-acl file0.txt

C:\PS>get-childitem c:\temp -recurse -include *.txt -force | set-acl -aclobject $newacl

Beschreibung
-----------
Mit diesen Befehlen werden die Sicherheitsbeschreibungen in der Datei "file0.txt" auf alle Textdateien im Verzeichnis "C:\temp" einschließlich aller Unterverzeichnisse angewendet.

Im ersten Befehl wird die Sicherheitsbeschreibung der Datei "file0.txt" im aktuellen Verzeichnis abgerufen und mit dem Zuweisungsoperator (=) in der Variablen "$newACL" gespeichert.

Mit dem ersten Befehl in der Pipeline werden mit dem Cmdlet "Get-ChildItem" alle Textdateien im Verzeichnis "C:\Temp" abgerufen. Durch den Recurse-Parameter wird der Befehl auf alle Unterverzeichnisse von "C:\temp" ausgeweitet. Durch den Include-Parameter werden nur Dateien mit der Erweiterung ".txt" abgerufen. Durch den Force-Parameter werden auch versteckte Dateien abgerufen. ("c:\temp\*.txt" kann nicht verwendet werden, da der Recurse-Parameter nur für Verzeichnisse, nicht aber für Dateien verwendet werden kann.)

Mit dem Pipelineoperator (|) werden die Objekte, die die abgerufenen Dateien darstellen, an den Befehl "Set-Acl" gesendet, durch den die Sicherheitsbeschreibung im AclObject-Parameter auf alle Dateien in der Pipeline angewendet wird.

In der Praxis sollten Sie den Befehl "Set-Acl" zunächst immer mit dem Whatif-Parameter verwenden, wenn sich der Befehl möglicherweise auf mehrere Dateien auswirkt. In diesem Fall lautet der zweite Befehl in der Pipeline "set-acl -aclobject $newacl -whatif". Mit diesem Befehl werden alle Dateien aufgeführt, auf die sich der Befehl auswirken würde. Überprüfen Sie die Ergebnisse, und führen Sie den Befehl dann ohne Whatif-Parameter erneut aus.





Siehe auch

Konzepte

Get-Acl