Remove-AzDataLakeGen2AclRecursive

Usuń listę ACL rekursywnie na określonej ścieżce.

Składnia

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

Opis

Polecenie cmdlet Remove-AzDataLakeGen2AclRecursive usuwa listę ACL rekursywnie na określonej ścieżce. Wpisy listy ACL w oryginalnej liście ACL, które mają ten sam typ AccessControlType, DefaultScope i EntityId z wejściowymi wpisami listy ACL (nawet z różnymi uprawnieniami) zostaną usunięte lbe.

Przykłady

Przykład 1: Rekursywne usuwanie listy ACL w katalogu głównym systemu plików

$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType user -EntityId $id -Permission r-x -DefaultScope
$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType user -EntityId $id -Permission r-x -InputObject $acl
Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Acl $acl -Context $ctx
WARNING: To find the ACL Entry to remove, will only compare AccessControlType, DefaultScope and EntityId, will omit Permission.

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

To polecenie najpierw tworzy obiekt listy ACL z 2 wpisami listy acl, a następnie usuwa listę ACL rekursywnie w katalogu głównym systemu plików.

Przykład 2: Rekursywne usuwanie listy ACL w katalogu

$result = Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl  -Context $ctx
WARNING: To find the ACL Entry to remove, will only compare AccessControlType, DefaultScope and EntityId, will omit Permission.

$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 = Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl -ContinuationToken $result.ContinuationToken -Context $ctx
WARNING: To find the ACL Entry to remove, will only compare AccessControlType, DefaultScope and EntityId, will omit Permission.

$result

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

To polecenie najpierw usuwa listę ACL rekursywnie w katalogu i zakończyło się niepowodzeniem, a następnie wznawia działanie funkcji ContinuationToken po usunięciu przez użytkownika pliku, który zakończył się niepowodzeniem.

Przykład 3. Usuwanie cyklicznie fragmentu listy ACL według fragmentu

$token = $null
$TotalDirectoriesSuccess = 0
$TotalFilesSuccess = 0
$totalFailure = 0
$FailedEntries = New-Object System.Collections.Generic.List[System.Object]
do
{
    $result = Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path "dir1" -Acl $acl  -BatchSize 1000 -MaxBatchCount 50 -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)

Ten skrypt spowoduje ponowne usunięcie listy ACL w ramach fragmentu katalogu według fragmentu z rozmiarem fragmentu jako BatchSize * MaxBatchCount. Rozmiar fragmentu to 50000 w tym skrycie.

Przykład 4: Usuwanie listy ACL rekursywnie w katalogu i ContinueOnFailure, a następnie wznawianie z awarii jeden po jednym

$result = Remove-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
            Remove-AzDataLakeGen2AclRecursive -FileSystem "filesystem1" -Path $path -Acl $acl -Context $ctx
        }

To polecenie najpierw usuwa listę ACL rekursywnie do katalogu z ciągiem ContinueOnFailure, a niektóre elementy zakończyły się niepowodzeniem, a następnie wznów elementy, które zakończyły się niepowodzeniem.

Parametry

-Acl

Lista kontroli dostępu POSIX, która ma być ustawiana rekursywnie dla pliku lub katalogu.

Type:PSPathAccessControlEntry[]
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-AsJob

Uruchamianie polecenia cmdlet w tle

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-BatchSize

Jeśli rozmiar zestawu danych przekracza rozmiar partii, operacja zostanie podzielona na wiele żądań, aby można było śledzić postęp. Rozmiar partii powinien należeć do zakresu od 1 do 2000. Wartość domyślna to 2000.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Context

Obiekt kontekstu usługi Azure Storage

Type:IStorageContext
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ContinuationToken

Token kontynuacji.

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ContinueOnFailure

Ustaw ten parametr, aby ignorować błędy i kontynuować wykonywanie operacji na innych podrzędnych jednostkach katalogu. Domyślna operacja zakończy się szybko po napotkaniu błędów.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-DefaultProfile

Poświadczenia, konto, dzierżawa i subskrypcja używane do komunikacji z platformą Azure.

Type:IAzureContextContainer
Aliases:AzureRmContext, AzureCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-FileSystem

Nazwa systemu plików

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-MaxBatchCount

Maksymalna liczba partii, które można wykonać przy pojedynczej zmianie operacji kontroli dostępu. Jeśli rozmiar zestawu danych przekracza wartość MaxBatchCount pomnożoną wartość BatchSize, zostanie zwrócony token kontynuacji.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

Ścieżka w określonym systemie plików, która ma być zmieniana rekursywnie. Może być plikiem lub katalogiem. W formacie "directory/file.txt" lub "directory1/directory2/". Pomiń ustawienie tego parametru, aby zmienić listę Acl rekursywnie z katalogu głównego systemu plików.

Type:String
Position:1
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

String

IStorageContext

Dane wyjściowe

String