Freigeben über


Set-Acl

Ändert die Sicherheitsbeschreibung eines angegebenen Elements, z. B. eine Datei oder einen Registrierungsschlüssel.

Syntax

ByPath (Standard)

Set-Acl
    [-Path] <String[]>
    [-AclObject] <Object>
    [[-CentralAccessPolicy] <String>]
    [-ClearCentralAccessPolicy]
    [-Passthru]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-WhatIf]
    [-Confirm]
    [-UseTransaction]
    [<CommonParameters>]

ByInputObject

Set-Acl
    [-InputObject] <PSObject>
    [-AclObject] <Object>
    [-Passthru]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-WhatIf]
    [-Confirm]
    [-UseTransaction]
    [<CommonParameters>]

ByLiteralPath

Set-Acl
    [-AclObject] <Object>
    [[-CentralAccessPolicy] <String>]
    -LiteralPath <String[]>
    [-ClearCentralAccessPolicy]
    [-Passthru]
    [-Filter <String>]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-WhatIf]
    [-Confirm]
    [-UseTransaction]
    [<CommonParameters>]

Beschreibung

Das cmdlet Set-Acl ändert den Sicherheitsdeskriptor eines angegebenen Elements, z. B. einer Datei oder eines Registrierungsschlüssels, um die Werte in einem von Ihnen bereitgestellten Sicherheitsdeskriptor abzugleichen.

Um Set-Aclzu verwenden, verwenden Sie den Path oder InputObject Parameter, um das Element zu identifizieren, dessen Sicherheitsdeskriptor Sie ändern möchten. Verwenden Sie dann die AclObject oder SecurityDescriptor Parameter, um einen Sicherheitsdeskriptor mit den werten zu liefern, die Sie anwenden möchten. Set-Acl wendet den bereitgestellten Sicherheitsdeskriptor an. Er verwendet den Wert des AclObject--Parameters als Modell und ändert die Werte im Sicherheitsdeskriptor des Elements so, dass sie den Werten im AclObject--Parameter entsprechen.

Beispiele

Beispiel 1: Kopieren einer Sicherheitsbeschreibung aus einer Datei in eine andere

$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL

Diese Befehle kopieren die Werte aus dem Sicherheitsdeskriptor der Dog.txt Datei in den Sicherheitsdeskriptor der Cat.txt Datei. Nach Abschluss der Befehle sind die Sicherheitsdeskriptoren der Dog.txt und Cat.txt Dateien identisch.

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

Mit dem zweiten Befehl Set-Acl werden die Werte in der ACL von Cat.txt in die Werte in $DogACL geändert.

Der Wert des Path Parameters ist der Pfad zur Cat.txt Datei. Der Wert des Parameters AclObject ist die Modell-ACL, in diesem Fall die ACL von Dog.txt, wie sie in der Variablen $DogACL gespeichert ist.

Beispiel 2: Verwenden des Pipelineoperators zum Übergeben eines Deskriptors

Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"

Dieser Befehl ist fast identisch mit dem Befehl im vorherigen Beispiel, mit der Ausnahme, dass er einen Pipelineoperator verwendet, um die Sicherheitsbeschreibung von einem Get-Aclcommand an einen Set-Acl Befehl zu senden.

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

Der zweite Befehl verwendet Set-Acl, um die Sicherheitsbeschreibung von Dog.txt auf Cat.txtanzuwenden. Nach Abschluss des Befehls sind die ACLs der Dog.txt und Cat.txt Dateien identisch.

Beispiel 3: Anwenden eines Sicherheitsdeskriptors auf mehrere Dateien

$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl

Mit diesen Befehlen werden die Sicherheitsbeschreibungen in der File0.txt Datei auf alle Textdateien im Verzeichnis C:\Temp und in allen zugehörigen Unterverzeichnissen angewendet.

Der erste Befehl ruft die Sicherheitsbeschreibung der File0.txt Datei im aktuellen Verzeichnis ab und verwendet den Zuweisungsoperator (=), um sie in der Variablen $NewACL zu speichern.

Der erste Befehl in der Pipeline verwendet das Cmdlet Get-ChildItem, um alle Textdateien im Verzeichnis C:\Temp abzurufen. Der Parameter Recurse erweitert den Befehl auf alle Unterverzeichnisse von C:\temp. Der Include-Parameter beschränkt die abgerufenen Dateien auf die Dateien mit der Dateinamenerweiterung ".txt". Der parameter "Force" ruft ausgeblendete Dateien ab, die andernfalls ausgeschlossen werden. (Sie können "c:\temp*.txt" nicht verwenden, da der Parameter "Recurse " auf Verzeichnisse und nicht auf Dateien angewendet wird.)

Der Pipelineoperator (|) sendet die Objekte, die die abgerufenen Dateien darstellen, an das Set-Acl Cmdlet, das die Sicherheitsbeschreibung im AclObject-Parameter auf alle Dateien in der Pipeline anwendet.

In der Praxis empfiehlt es sich, den WhatIf-Parameter mit allen Set-Acl Befehlen zu verwenden, die sich auf mehrere Elemente auswirken können. In diesem Fall wäre der zweite Befehl in der Pipeline "Set-Acl -AclObject $NewAcl -WhatIf". Dieser Befehl listet die Dateien auf, die vom Befehl betroffen wären. Nach der Überprüfung des Ergebnisses können Sie den Befehl erneut ohne den WhatIf Parameter ausführen.

Parameter

-AclObject

Gibt eine ACL mit den gewünschten Eigenschaftswerten an. Set-Acl ändert die ACL des Elements, das durch den Path oder InputObject Parameter angegeben wird, um den Werten im angegebenen Sicherheitsobjekt zu entsprechen.

Sie können die Ausgabe eines Get-Acl Befehls in einer Variablen speichern und dann den AclObject-Parameter verwenden, um die Variable zu übergeben, oder einen Get-Acl Befehl eingeben.

Parametereigenschaften

Typ:Object
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:1
Obligatorisch:True
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-CentralAccessPolicy

Richtet die zentrale Zugriffsrichtlinie des Elements ein oder ändert sie. Geben Sie die CAP-ID oder den Anzeigenamen einer zentralen Zugriffsrichtlinie auf dem Computer ein.

Ab Windows Server 2012 können Administratoren Active Directory und Gruppenrichtlinien verwenden, um zentrale Zugriffsrichtlinien für Benutzer und Gruppen festzulegen. Weitere Informationen finden Sie unter dynamische Zugriffssteuerung: Szenarioübersicht.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ByPath
Position:2
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
ByLiteralPath
Position:2
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-ClearCentralAccessPolicy

Entfernt die zentrale Zugriffsrichtlinie aus dem angegebenen Element.

Ab Windows Server 2012 können Administratoren Active Directory und Gruppenrichtlinien verwenden, um zentrale Zugriffsrichtlinien für Benutzer und Gruppen festzulegen. Weitere Informationen finden Sie unter dynamische Zugriffssteuerung: Szenarioübersicht.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ByPath
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ByLiteralPath
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Confirm

Fordert Sie zur Bestätigung auf, bevor Sie das Cmdlet ausführen.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:vgl

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Exclude

Lässt die angegebenen Elemente aus. Der Wert dieses Parameters qualifiziert den parameter Path. Geben Sie ein Pfadelement oder Einmuster ein, z. B. "*.txt". Wildcards sind zulässig.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Filter

Gibt einen Filter im Format oder in der Sprache des Anbieters an. Der Wert dieses Parameters qualifiziert den parameter Path. Die Syntax des Filters, einschließlich der Verwendung von Wildcards, hängt vom Anbieter ab. Filter sind effizienter als andere Parameter, da der Anbieter sie beim Abrufen der Objekte anwendet, anstatt die Objekte erst abgerufen und dann von PowerShell gefiltert werden.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Include

Ändert nur die angegebenen Elemente. Der Wert dieses Parameters qualifiziert den parameter Path. Geben Sie ein Pfadelement oder Einmuster ein, z. B. "*.txt". Wildcards sind zulässig.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-InputObject

Ändert die Sicherheitsbeschreibung des angegebenen Objekts. Geben Sie eine Variable ein, die das Objekt enthält, oder einen Befehl, der das Objekt abruft.

Das zu ändernde Objekt kann nicht über die Pipeline an Set-ACL übergeben werden. Verwenden Sie stattdessen den parameter InputObject explizit im Befehl.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:PSObject
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ByInputObject
Position:0
Obligatorisch:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-LiteralPath

Ändert die Sicherheitsbeschreibung des angegebenen Elements. Im Gegensatz zu Path wird der Wert des LiteralPath-Parameters genau so verwendet, wie er eingegeben wurde. Es werden keine Zeichen als Wildcards interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen signalisieren PowerShell, dass keine Zeichen als Escapesequenzen interpretiert werden sollen.

Dieser Parameter wurde in Windows PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:PSPath

Parametersätze

ByLiteralPath
Position:Named
Obligatorisch:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-Passthru

Gibt ein Objekt zurück, das den geänderten Sicherheitsdeskriptor darstellt. Standardmäßig generiert dieses Cmdlet keine Ausgabe.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Path

Ändert die Sicherheitsbeschreibung des angegebenen Elements. Geben Sie den Pfad zu einem Element ein, z. B. einen Pfad zu einer Datei oder einem Registrierungsschlüssel. Wildcards sind zulässig.

Wenn Sie ein Sicherheitsobjekt an Set-Acl übergeben (entweder mithilfe des AclObject- oder SecurityDescriptor Parameter oder durch Übergeben eines Sicherheitsobjekts von Get-Acl an Set-Acl), und Sie geben den Path Parameter (Name und Wert) weg), Set-Acl verwendet den Pfad, der im Sicherheitsobjekt enthalten ist.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:True
Nicht anzeigen:False

Parametersätze

ByPath
Position:0
Obligatorisch:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-UseTransaction

Enthält den Befehl in der aktiven Transaktion. Dieser Parameter ist nur gültig, wenn eine Transaktion ausgeführt wird. Weitere Informationen finden Sie unter about_Transactions.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:usetx

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-WhatIf

Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Wi

Parametersätze

(All)
Position:Named
Obligatorisch:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

System.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor

Sie können ein ACL-Objekt oder eine Sicherheitsbeschreibung über die Pipeline an Set-Acl.

Ausgaben

FileSecurity

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

Hinweise

Das cmdlet Set-Acl wird vom PowerShell-Dateisystem und registrierungsanbieter unterstützt. So können Sie sie verwenden, um die Sicherheitsbeschreibungen von Dateien, Verzeichnissen und Registrierungsschlüsseln zu ändern.