Sdílet prostřednictvím


Set-AzDataLakeGen2AclRecursive

Nastavte ACL rekurzivně na zadanou cestu.

Syntaxe

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

Description

Rutina Set-AzDataLakeGen2AclRecursive nastaví ACL rekurzivně na zadanou cestu. Vstupní seznam ACL zcela nahradí původní seznam ACL.

Příklady

Příklad 1: Rekurzivní nastavení seznamu ACL v adresáři

$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               :

Tento příkaz nejprve vytvoří objekt ACL se 3 položkami acl a pak nastaví seznam ACL rekurzivně v adresáři.

Příklad 2: Rekurzivní nastavení seznamu ACL v kořenovém adresáři systému souborů

$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               :

Tento příkaz nejprve rekurzivně nastaví seznam ACL do kořenového adresáře a selhal a potom po opravě souboru, který selhal, pokračovat v pokračováníMTokenu.

Příklad 3: Nastavení rekurzivního bloku ACL podle bloku dat

$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)

Tento skript nastaví seznam ACL rekurzivně u bloků adresářů podle bloku dat s velikostí bloku bloků dat jako BatchSize * MaxBatchCount. Velikost bloku dat je v tomto skriptu 200.

Příklad 4: Rekurzivní nastavení seznamu ACL v adresáři a ContinueOnFailure a následné obnovení z selhání po druhém

$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
        }

Tento příkaz nejprve rekurzivně nastaví seznam ACL do adresáře s continueOnFailure a některé položky se nezdařily a potom obnoví položky, které selhaly.

Parametry

-Acl

Seznam řízení přístupu POSIX pro rekurzivní nastavení souboru nebo adresáře.

Typ:PSPathAccessControlEntry[]
Position:Named
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-AsJob

Spuštění rutiny na pozadí

Typ:SwitchParameter
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-BatchSize

Pokud velikost sady dat překročí velikost dávky, operace se rozdělí na několik požadavků, aby bylo možné sledovat průběh. Velikost dávky by měla být v rozmezí od 1 do 2000. Výchozí hodnota je 2000.

Typ:Int32
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Confirm

Před spuštěním rutiny zobrazí výzvu k potvrzení.

Typ:SwitchParameter
Aliasy:cf
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Context

Kontextový objekt služby Azure Storage

Typ:IStorageContext
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-ContinuationToken

Token pokračování

Typ:String
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-ContinueOnFailure

Nastavte tento parametr tak, aby ignoroval chyby a pokračoval v proceeingu s operací u jiných dílčích entit adresáře. Ve výchozím nastavení se operace rychle ukončí při výskytu selhání.

Typ:SwitchParameter
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-DefaultProfile

Přihlašovací údaje, účet, tenant a předplatné používané ke komunikaci s Azure.

Typ:IAzureContextContainer
Aliasy:AzureRmContext, AzureCredential
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-FileSystem

Název systému souborů

Typ:String
Position:0
Default value:None
Vyžadováno:True
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-MaxBatchCount

Maximální počet dávek, které může provést jedna změna operace řízení přístupu. Pokud velikost datové sady překročí MaxBatchCount násobení BatchSize, token pokračování se vrátí.

Typ:Int32
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

-Path

Cesta v zadaném systému souborů, která se má změnit acl rekurzivně. Může to být soubor nebo adresář. Ve formátu directory/file.txt nebo directory1/directory2/. Pokud chcete změnit seznam ACL rekurzivně z kořenového adresáře systému souborů, přeskočte tento parametr.

Typ:String
Position:1
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:True
Přijmout zástupné znaky:False

-WhatIf

Zobrazuje, co by se stalo při spuštění rutiny. Rutina není spuštěna.

Typ:SwitchParameter
Aliasy:wi
Position:Named
Default value:None
Vyžadováno:False
Přijmout vstup kanálu:False
Přijmout zástupné znaky:False

Vstupy

String

IStorageContext

Výstupy

String