Zarządzanie katalogami i plikami w usłudze Azure Data Lake Storage Gen2 za pomocą programu PowerShell

W tym artykule pokazano, jak za pomocą programu PowerShell tworzyć katalogi i pliki i zarządzać nimi w kontach magazynu, które mają hierarchiczną przestrzeń nazw.

Aby dowiedzieć się, jak uzyskać, ustawić i zaktualizować listy kontroli dostępu (ACL, Access Control Lists) katalogów i plików, zobacz Zarządzanie listami ACL za pomocą programu PowerShell w usłudze Azure Data Lake Storage Gen2.

OdwołanieMapowanie gen1 na gen2Opinie

Wymagania wstępne

Instalowanie modułu PowerShell

  1. Sprawdź, czy zainstalowana wersja programu PowerShell jest 5.1 lub nowsza, używając następującego polecenia.

    echo $PSVersionTable.PSVersion.ToString()
    

    Aby uaktualnić posiadaną wersję programu PowerShell, zobacz Uaktualnianie istniejących Windows PowerShell

  2. Zainstaluj moduł az.Storage.

    Install-Module Az.Storage -Repository PSGallery -Force  
    

    Aby uzyskać więcej informacji na temat instalowania modułów programu PowerShell, zobacz Instalowanie Azure PowerShell moduł

Połączenie do konta

Wybierz sposób uzyskiwania uprawnień do konta magazynu za pomocą poleceń.

Opcja 1. Uzyskiwanie autoryzacji przy użyciu usługi Azure Active Directory (Azure AD)

Dzięki takiej metody system zapewnia, że twoje konto użytkownika ma odpowiednie przypisania kontroli dostępu oparte na rolach platformy Azure (Azure RBAC) i uprawnienia ACL.

  1. Otwórz okno Windows PowerShell, a następnie zaloguj się do subskrypcji platformy Azure za pomocą tego polecenia i postępuj zgodnie ze wskazówkami Connect-AzAccount na ekranie.

    Connect-AzAccount
    
  2. Jeśli Twoja tożsamość jest skojarzona z więcej niż jedną subskrypcją, ustaw aktywną subskrypcję na subskrypcję konta magazynu, w którym chcesz tworzyć katalogi i zarządzać nimi. W tym przykładzie zastąp wartość <subscription-id> symbolu zastępczego identyfikatorem subskrypcji.

    Select-AzSubscription -SubscriptionId <subscription-id>
    
  3. Uzyskaj kontekst dla konta magazynu.

    $ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
    

Opcja 2. Uzyskiwanie autoryzacji przy użyciu klucza konta magazynu

W przypadku tej metody system nie sprawdza uprawnień azure RBAC ani ACL. Uzyskaj kontekst konta magazynu przy użyciu klucza konta.

$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -StorageAccountKey '<storage-account-key>'

Tworzenie kontenera

Kontener pełni rolę systemu plików dla twoich plików. Możesz ją utworzyć przy użyciu New-AzStorageContainer polecenia cmdlet.

W tym przykładzie jest owy kontener o nazwie my-file-system .

$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName

Tworzenie katalogu

Utwórz odwołanie do katalogu za pomocą New-AzDataLakeGen2Item polecenia cmdlet.

W tym przykładzie dodano katalog my-directory nazwany do kontenera.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory

W tym przykładzie dodano ten sam katalog, ale również ustawiane są uprawnienia,mask, wartości właściwości i wartości metadanych.

$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx---  -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata  @{"tag1" = "value1"; "tag2" = "value2" }

Pokazywanie właściwości katalogu

Ten przykład pobiera katalog za pomocą polecenia cmdlet, a następnie drukuje Get-AzDataLakeGen2Item wartości właściwości na konsoli.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
$dir =  Get-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
$dir.ACL
$dir.Permissions
$dir.Group
$dir.Owner
$dir.Properties
$dir.Properties.Metadata

Uwaga

Aby uzyskać katalog główny kontenera, pomiń -Path parametr.

Zmienianie nazwy lub przenoszenie katalogu

Zmień nazwę katalogu lub przenieś go za pomocą Move-AzDataLakeGen2Item polecenia cmdlet.

W tym przykładzie zmieniono nazwę katalogu z my-directory tej nazwy na my-new-directory .

$filesystemName = "my-file-system"
$dirname = "my-directory/"
$dirname2 = "my-new-directory/"
Move-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -DestFileSystem $filesystemName -DestPath $dirname2

Uwaga

Użyj -Force parametru, jeśli chcesz zastąpić bez monitów.

W tym przykładzie katalog został przeniesiony my-directory do podkierunkowego o nazwie my-directory-2my-subdirectory .

$filesystemName = "my-file-system"
$dirname = "my-directory/"
$dirname2 = "my-directory-2/my-subdirectory/"
Move-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -DestFileSystem $filesystemName -DestPath $dirname2

Usuwanie katalogu

Usuń katalog, korzystając z Remove-AzDataLakeGen2Item polecenia cmdlet.

W tym przykładzie usuwany jest katalog o nazwie my-directory .

$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item  -Context $ctx -FileSystem $filesystemName -Path $dirname

Możesz użyć -Force parametru, aby usunąć plik bez monitu.

Pobierz z katalogu

Pobierz plik z katalogu za pomocą Get-AzDataLakeGen2ItemContent polecenia cmdlet.

W tym przykładzie jest pobierany plik upload.txt o nazwie z katalogu o nazwie my-directory .

$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath

Zawartość katalogu listy

Spis treści katalogu przy użyciu polecenia Get-AzDataLakeGen2ChildItem cmdlet. Możesz użyć parametru opcjonalnego, aby uzyskać nazwę (zamiast identyfikatora -OutputUserPrincipalName obiektu) użytkowników.

W tym przykładzie jest wymieniona zawartość katalogu o nazwie my-directory .

$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName

W poniższym przykładzie wymieniono właściwości , , i wszystkich ACLPermissions elementów w GroupOwner katalogu. Parametr -FetchProperty jest wymagany do uzyskania wartości tej ACL właściwości.

$filesystemName = "my-file-system"
$dirname = "my-directory/"
$properties = Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -Recurse -FetchProperty
$properties.ACL
$properties.Permissions
$properties.Group
$properties.Owner

Uwaga

Aby wyświetlić listę zawartości katalogu głównego kontenera, pomiń -Path parametr.

Upload pliku do katalogu

Upload pliku do katalogu przy użyciu New-AzDataLakeGen2Item polecenia cmdlet.

W tym przykładzie plik został przekazać do katalogu upload.txt o nazwie my-directory .

$localSrcFile =  "upload.txt"
$filesystemName = "my-file-system"
$dirname = "my-directory/"
$destPath = $dirname + (Get-Item $localSrcFile).Name
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $destPath -Source $localSrcFile -Force

W tym przykładzie jest przesyłany ten sam plik, a następnie ustawiane są uprawnienia,mask, wartości właściwości i wartości metadanych pliku docelowego. W tym przykładzie te wartości również są drukowane na konsoli.

$file = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $destPath -Source $localSrcFile -Permission rwxrwxrwx -Umask ---rwx--- -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata  @{"tag1" = "value1"; "tag2" = "value2" }
$file1
$file1.Properties
$file1.Properties.Metadata

Uwaga

Aby przekazać plik do katalogu głównego kontenera, pomiń -Path parametr.

Pokazywanie właściwości pliku

Ten przykład pobiera plik przy użyciu polecenia cmdlet, a następnie drukuje Get-AzDataLakeGen2Item wartości właściwości na konsoli.

$filepath =  "my-directory/upload.txt"
$filesystemName = "my-file-system"
$file = Get-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $filepath
$file
$file.ACL
$file.Permissions
$file.Group
$file.Owner
$file.Properties
$file.Properties.Metadata

Usuwanie pliku

Usuń plik przy użyciu Remove-AzDataLakeGen2Item polecenia cmdlet.

W tym przykładzie usuwany jest plik o nazwie upload.txt .

$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item  -Context $ctx -FileSystem $filesystemName -Path $filepath

Możesz użyć -Force parametru, aby usunąć plik bez monitu.

Mapowanie gen1 na mapowanie gen2

W poniższej tabeli pokazano, jak polecenia cmdlet używane dla jeziora Data Lake Storage Gen1 są mapowane na polecenia cmdlet dla jeziora Data Lake Storage Gen2.

Polecenie cmdlet data lake Storage gen1 Polecenie cmdlet Data Lake Storage Gen2 Notatki
Get-AzDataLakeStoreChildItem Get-AzDataLakeGen2ChildItem Domyślnie polecenie cmdlet Get-AzDataLakeGen2ChildItem wyświetla tylko elementy podrzędne pierwszego poziomu. Parametr -Recurse wyświetla listę elementów podrzędnych cyklicznie.
Get-AzDataLakeStoreItem
Get-AzDataLakeStoreItemAclEntry
Get-AzDataLakeStoreItemOwner
Get-AzDataLakeStoreItemPermission
Get-AzDataLakeGen2Item Elementy wyjściowe polecenia cmdlet Get-AzDataLakeGen2Item mają następujące właściwości: Acl, Owner, Group, Permission.
Get-AzDataLakeStoreItemContent Get-AzDataLakeGen2FileContent Polecenie Get-AzDataLakeGen2FileContent cmdlet pobiera zawartość pliku do pliku lokalnego.
Move-AzDataLakeStoreItem Move-AzDataLakeGen2Item
New-AzDataLakeStoreItem New-AzDataLakeGen2Item To polecenie cmdlet przekaże nową zawartość pliku z pliku lokalnego.
Remove-AzDataLakeStoreItem Remove-AzDataLakeGen2Item
Set-AzDataLakeStoreItemOwner
Set-AzDataLakeStoreItemPermission
Set-AzDataLakeStoreItemAcl
Update-AzDataLakeGen2Item Polecenie Update-AzDataLakeGen2Item aktualizuje tylko jeden element, a nie rekurencyjnie. Jeśli chcesz aktualizować cyklicznie, wygeneruj listę elementów przy użyciu Get-AzDataLakeStoreChildItem cmdlet, a następnie za pomocą tego polecenia cmdlet ujmij go w Update-AzDataLakeGen2Item cmdlet.
Test-AzDataLakeStoreItem Get-AzDataLakeGen2Item Polecenie Get-AzDataLakeGen2Item spowoduje zgłoszenie błędu, jeśli element nie istnieje.

Zobacz też