Freigeben über


Set-AzDataLakeGen2AclRecursive

Legen Sie ACL rekursiv auf dem angegebenen Pfad fest.

Syntax

Set-AzDataLakeGen2AclRecursive
   [-FileSystem] <String>
   [[-Path] <String>]
   [-ContinuationToken <String>]
   -Acl <PSPathAccessControlEntry[]>
   [-ContinueOnFailure]
   [-BatchSize <Int32>]
   [-MaxBatchCount <Int32>]
   [-AsJob]
   [-Context <IStorageContext>]
   [-DefaultProfile <IAzureContextContainer>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Beschreibung

Das Cmdlet Set-AzDataLakeGen2AclRecursive legt ACL rekursiv auf dem angegebenen Pfad fest. Die Eingabe-ACL ersetzt die ursprüngliche ACL vollständig.

Beispiele

Beispiel 1: Rekursives Festlegen von ACL in einem Verzeichnis

$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType user -Permission rwx 
$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType group -Permission rw- -InputObject $acl 
$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType other -Permission "rw-" -InputObject $acl
Set-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -Context $ctx

FailedEntries                   : 
TotalDirectoriesSuccessfulCount : 7
TotalFilesSuccessfulCount       : 5
TotalFailureCount               : 0
ContinuationToken               :

Dieser Befehl erstellt zuerst ein ACL-Objekt mit 3 Acl-Einträgen und legt dann ACL rekursiv für ein Verzeichnis fest.

Beispiel 2: Rekursives Festlegen von ACL in einem Stammverzeichnis des Dateisystems

$result = Set-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Acl $acl  -Context $ctx

$result

FailedEntries                   : {dir1/dir2/file4}
TotalDirectoriesSuccessfulCount : 500
TotalFilesSuccessfulCount       : 2500
TotalFailureCount               : 1
ContinuationToken               : VBaHi5TfyO2ai1wYTRhIL2FjbGNibjA2c3RmATAxRDVEN0UzRENFQzZCRTAvYWRsc3Rlc3QyATAxRDY2M0ZCQTZBN0JGQTkvZGlyMC9kaXIxL2ZpbGUzFgAAAA==

$result.FailedEntries

Name            IsDirectory ErrorMessage                                                                   
----            ----------- ------------                                                                   
dir0/dir2/file4       False This request is not authorized to perform this operation using this permission.

# user need fix the failed item , then can resume with ContinuationToken

$result = Set-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Acl $acl -ContinuationToken $result.ContinuationToken -Context $ctx

$result

FailedEntries                   : 
TotalDirectoriesSuccessfulCount : 100
TotalFilesSuccessfulCount       : 1000
TotalFailureCount               : 0
ContinuationToken               :

Dieser Befehl legt zuerst ACL rekursiv auf ein Stammverzeichnis fest und ist fehlgeschlagen und wird dann mit ContinuationToken fortgesetzt, nachdem der Benutzer die fehlgeschlagene Datei behoben hat.

Beispiel 3: Rekursives Festlegen eines ACL-Abschnitts nach Block

$token = $null
$TotalDirectoriesSuccess = 0
$TotalFilesSuccess = 0
$totalFailure = 0
$FailedEntries = New-Object System.Collections.Generic.List[System.Object]
do
{
    $result = Set-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl  -BatchSize 100 -MaxBatchCount 2 -ContinuationToken $token -Context $ctx

    # echo $result
    $TotalFilesSuccess += $result.TotalFilesSuccessfulCount
    $TotalDirectoriesSuccess += $result.TotalDirectoriesSuccessfulCount
    $totalFailure += $result.TotalFailureCount
    $FailedEntries += $result.FailedEntries
    $token = $result.ContinuationToken
}while (($token -ne $null) -and ($result.TotalFailureCount -eq 0))
echo ""
echo "[Result Summary]"
echo "TotalDirectoriesSuccessfulCount: `t$($TotalDirectoriesSuccess)"
echo "TotalFilesSuccessfulCount: `t`t`t$($TotalFilesSuccess)"
echo "TotalFailureCount: `t`t`t`t`t$($totalFailure)"
echo "ContinuationToken: `t`t`t`t`t$($token)"
echo "FailedEntries:"$($FailedEntries | ft)

Mit diesem Skript wird die ACL im Verzeichnisabschnitt nach Block rescursiv festgelegt, wobei die Blockgröße als BatchSize * MaxBatchCount verwendet wird. Die Blockgröße beträgt 200 in diesem Skript.

Beispiel 4: Rekursives Festlegen von ACL in einem Verzeichnis und ContinueOnFailure und fortsetzen von Fehlern nacheinander

$result = Set-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -ContinueOnFailure -Context $ctx

$result

FailedEntries                   : {dir0/dir1/file1, dir0/dir2/file4}
TotalDirectoriesSuccessfulCount : 100
TotalFilesSuccessfulCount       : 500
TotalFailureCount               : 2
ContinuationToken               : VBaHi5TfyO2ai1wYTRhIL2FjbGNibjA2c3RmATAxRDVEN0UzRENFQzZCRTAvYWRsc3Rlc3QyATAxRDY2M0ZCQTZBN0JGQTkvZGlyMC9kaXIxL2ZpbGUzFgAAAA==

$result.FailedEntries

Name            IsDirectory ErrorMessage                                                                   
----            ----------- ------------                                                                   
dir0/dir1/file1       False This request is not authorized to perform this operation using this permission.
dir0/dir2/file4       False This request is not authorized to perform this operation using this permission.

# user need fix the failed item , then can resume with ContinuationToken

foreach ($path in $result.FailedEntries.Name)
        {
            # user code to fix failed entry in $path
            
            #set ACL again
            Set-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path $path -Acl $acl -Context $ctx
        }

Dieser Befehl legt zuerst ACL rekursiv auf ein Verzeichnis mit ContinueOnFailure fest, und einige Elemente sind fehlgeschlagen, und die fehlgeschlagenen Elemente werden dann einzeln fortgesetzt.

Parameter

-Acl

Die POSIX-Zugriffssteuerungsliste, die rekursiv für die Datei oder das Verzeichnis festgelegt werden soll.

Typ:PSPathAccessControlEntry[]
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-AsJob

Cmdlet im Hintergrund ausführen

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-BatchSize

Wenn die Größe des Datasets die Batchgröße überschreitet, wird der Vorgang in mehrere Anforderungen aufgeteilt, sodass der Fortschritt nachverfolgt werden kann. Die Batchgröße sollte zwischen 1 und 2000 sein. Der Standardwert ist 2000.

Typ:Int32
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Confirm

Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.

Typ:SwitchParameter
Aliase:cf
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Context

Azure Storage Context-Objekt

Typ:IStorageContext
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-ContinuationToken

Fortsetzungstoken.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-ContinueOnFailure

Legen Sie diesen Parameter fest, um Fehler zu ignorieren und den Vorgang für andere Unterentitäten des Verzeichnisses fortzusetzen. Standardmäßig wird der Vorgang bei Auftreten von Fehlern schnell beendet.

Typ:SwitchParameter
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-DefaultProfile

Anmeldeinformationen, Konto, Mandant und Abonnement für die Kommunikation mit Azure

Typ:IAzureContextContainer
Aliase:AzureRmContext, AzureCredential
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-FileSystem

Dateisystemname

Typ:String
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-MaxBatchCount

Maximale Anzahl von Batches, die einzelne Änderungen des Zugriffssteuerungsvorgangs ausführen können. Wenn die Größe des Datasets maxBatchCount multipliziert BatchSize überschreitet, wird das Fortsetzungstoken zurückgegeben.

Typ:Int32
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Path

Der Pfad im angegebenen FileSystem, das Acl rekursiv ändern soll. Kann eine Datei oder ein Verzeichnis sein. Im Format "directory/file.txt" oder "directory1/directory2/". Überspringen Sie diesen Parameter, um Acl rekursiv aus dem Stammverzeichnis des Dateisystems zu ändern.

Typ:String
Position:1
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-WhatIf

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

Typ:SwitchParameter
Aliase:wi
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

String

IStorageContext

Ausgaben

String