Zarządzanie katalogami i plikami w usłudze Azure Data Lake Storage Gen2 przy użyciu programu PowerShell

W tym artykule pokazano, jak używać programu PowerShell do tworzenia katalogów i plików oraz plików na kontach magazynu, które mają hierarchiczną przestrzeń nazw.

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

Mapowanie | z 1. generacji 2. przesyłania opinii |

Wymagania wstępne

  • Subskrypcja platformy Azure. Aby uzyskać więcej informacji, zobacz Uzyskiwanie bezpłatnej wersji próbnej platformy Azure.

  • Konto magazynu z włączoną hierarchiczną przestrzenią nazw. Postępuj zgodnie z tymi instrukcjami, aby je utworzyć.

  • Program .NET Framework jest zainstalowany w wersji 4.7.2 lub nowszej. Aby uzyskać więcej informacji, zobacz Pobieranie programu .NET Framework.

  • Wersja programu PowerShell lub nowsza 5.1 .

Zainstaluj moduł programu 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ć wersję programu PowerShell, zobacz Uaktualnianie istniejącego programu Windows PowerShell

  2. Zainstaluj moduł Az.Storage .

    Install-Module Az.Storage -Repository PSGallery -Force  
    

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

Połączenie do konta

Wybierz sposób uzyskiwania autoryzacji na koncie magazynu za pomocą poleceń.

Opcja 1. Uzyskiwanie autoryzacji przy użyciu identyfikatora Entra firmy Microsoft

Dzięki temu system zapewnia, że twoje konto użytkownika ma odpowiednie przypisania kontroli dostępu na podstawie ról (RBAC) platformy Azure i uprawnienia listy ACL.

  1. Otwórz okno polecenia programu Windows PowerShell, a następnie zaloguj się do subskrypcji platformy Azure za Connect-AzAccount pomocą polecenia i postępuj zgodnie z instrukcjami wyświetlanymi na ekranie.

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

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

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

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

Dzięki temu system nie sprawdza uprawnień kontroli dostępu opartej na rolach platformy Azure ani listy ACL. Pobierz kontekst konta magazynu przy użyciu klucza konta.

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

Tworzenie kontenera

Kontener działa jako system plików. Możesz go utworzyć przy użyciu New-AzStorageContainer polecenia cmdlet .

W tym przykładzie zostanie utworzony kontener o nazwie my-file-system.

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

Tworzenie katalogu

Utwórz odwołanie do katalogu przy użyciu New-AzDataLakeGen2Item polecenia cmdlet .

W tym przykładzie zostanie dodany katalog o nazwie my-directory 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 także ustawiane są uprawnienia, maska umask, 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" }

Pokaż właściwości katalogu

W tym przykładzie katalog jest pobierany przy użyciu Get-AzDataLakeGen2Item polecenia cmdlet , a następnie wyświetla wartości właściwości w konsoli programu .

$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ę lub przenieś katalog przy użyciu Move-AzDataLakeGen2Item polecenia cmdlet .

W tym przykładzie zmieniono nazwę katalogu z nazwy my-directory na nazwę 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 parametru -Force , jeśli chcesz zastąpić bez monitów.

W tym przykładzie zostanie przeniesiony katalog o nazwie my-directory do podkatalogu my-directory-2 o nazwie my-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 przy użyciu Remove-AzDataLakeGen2Item polecenia cmdlet .

W tym przykładzie usunięto katalog o nazwie my-directory.

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

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

Pobieranie z katalogu

Pobierz plik z katalogu przy użyciu Get-AzDataLakeGen2ItemContent polecenia cmdlet .

Ten przykład pobiera plik o nazwie upload.txt 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

Wyświetlanie zawartości katalogu

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

W tym przykładzie wymieniono 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 ACLwłaściwości , Permissions, Groupi Owner każdego elementu w katalogu. Parametr -FetchProperty jest wymagany do pobrania wartości dla 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 .

Przekazywanie pliku do katalogu

Przekaż plik do katalogu przy użyciu New-AzDataLakeGen2Item polecenia cmdlet .

Ten przykład przekazuje plik o nazwie upload.txt do katalogu 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

Ten przykład przekazuje ten sam plik, ale następnie ustawia uprawnienia, maskę umask, wartości właściwości i wartości metadanych pliku docelowego. W tym przykładzie te wartości są również wyświetlane w konsoli programu .

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

Pokaż właściwości pliku

W tym przykładzie plik jest pobierany przy użyciu Get-AzDataLakeGen2Item polecenia cmdlet , a następnie wyświetla wartości właściwości w konsoli programu .

$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 usunięto plik o nazwie upload.txt.

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

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

Mapowanie gen1–Gen2

W poniższej tabeli przedstawiono sposób mapowania poleceń cmdlet używanych dla usługi Data Lake Storage Gen1 na polecenia cmdlet dla usługi Data Lake Storage Gen2.

Uwaga

Usługa Azure Data Lake Storage Gen1 została wycofana. Zobacz ogłoszenie o wycofaniu tutaj. Zasoby usługi Data Lake Storage Gen1 nie są już dostępne. Jeśli potrzebujesz specjalnej pomocy, skontaktuj się z nami.

Polecenie cmdlet usługi Data Lake Storage Gen1 Polecenie cmdlet usługi Data Lake Storage Gen2 Uwagi
Get-AzDataLakeStoreChildItem Get-AzDataLakeGen2ChildItem Domyślnie polecenie cmdlet Get-AzDataLakeGen2ChildItem wyświetla tylko elementy podrzędne pierwszego poziomu. Parametr -Recurse wyświetla elementy podrzędne rekursywnie.
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 cmdlet Get-AzDataLakeGen2FileContent pobierz zawartość pliku do pliku lokalnego.
Move-AzDataLakeStoreItem Move-AzDataLakeGen2Item
New-AzDataLakeStoreItem New-AzDataLakeGen2Item To polecenie cmdlet przekazuje nową zawartość pliku z pliku lokalnego.
Remove-AzDataLakeStoreItem Remove-AzDataLakeGen2Item
Set-AzDataLakeStoreItemOwner
Set-AzDataLakeStoreItemPermission
Set-AzDataLakeStoreItemAcl
Update-AzDataLakeGen2Item Polecenie cmdlet Update-AzDataLakeGen2Item aktualizuje tylko pojedynczy element, a nie rekursywnie. Jeśli chcesz zaktualizować cyklicznie, elementy listy przy użyciu polecenia cmdlet Get-AzDataLakeStoreChildItem, a następnie potok do polecenia cmdlet Update-AzDataLakeGen2Item.
Test-AzDataLakeStoreItem Get-AzDataLakeGen2Item Polecenie cmdlet Get-AzDataLakeGen2Item zgłasza błąd, jeśli element nie istnieje.

Zobacz też