Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


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

W tym artykule pokazano, jak używać PowerShell do tworzenia i zarządzania katalogami i plikami na kontach magazynu, które wykorzystują hierarchiczną przestrzeń nazw.

Aby dowiedzieć się, jak pobierać, ustawiać i aktualizować listy kontroli dostępu (ACL) katalogów i plików, zobacz Używanie programu PowerShell do zarządzania listami ACL w usłudze Azure Data Lake Storage.

Referencja | Mapowanie z Gen1 do Gen2 | Przekaż opinię

Wymagania wstępne

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

  • Konto magazynowe z włączoną obsługą hierarchicznej 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

Nawiązywanie połączenia z kontem

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

    Connect-AzAccount
    
  2. Jeśli twoja tożsamość jest powiązana z więcej niż jedną subskrypcją i nie zostaniesz poproszony o wybranie subskrypcji, ustaw aktywną subskrypcję na subskrypcję tego konta magazynu, na którym chcesz pracować. W tym przykładzie zastąp wartość zastępczą <subscription-id> identyfikatorem subskrypcji.

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

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

Tworzenie kontenera

Kontener działa jako system plików. Możesz go utworzyć za pomocą polecenia cmdlet New-AzStorageContainer .

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, używając cmdletu New-AzDataLakeGen2Item.

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 ustawiono uprawnienia, 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

Ten przykład pobiera katalog przy użyciu polecenia cmdlet Get-AzDataLakeGen2Item , a następnie wyświetla wartości właściwości w 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ę lub przenieś katalog przy użyciu polecenia cmdlet Move-AzDataLakeGen2Item .

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 nadpisać bez potwierdzeń.

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 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 cmdlet Get-AzDataLakeGen2ItemContent.

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 cmdletu Get-AzDataLakeGen2ChildItem. 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 ACL właściwości, Permissions, Group i 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 polecenia cmdlet New-AzDataLakeGen2Item .

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 wartości właściwości, wartości metadanych, uprawnienia i umask pliku docelowego. W tym przykładzie wartości są również wyświetlane w 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 .

Pokaż właściwości pliku

W tym przykładzie plik jest pobierany przy użyciu polecenia cmdlet Get-AzDataLakeGen2Item , a następnie wyświetla wartości właściwości w 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 polecenia cmdlet Remove-AzDataLakeGen2Item .

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, w jaki sposób polecenia cmdlet używane w Data Lake Storage Gen1 są mapowane na cmdlet dla Data Lake Storage.

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 dla usługi Data Lake Storage Gen1 Polecenie cmdlet usługi Data Lake Storage 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ć rekursywnie, wymień elementy za pomocą polecenia cmdlet Get-AzDataLakeStoreChildItem, a następnie przekaż je do potoku polecenia cmdlet Update-AzDataLakeGen2Item.
Test-AzDataLakeStoreItem Get-AzDataLakeGen2Item Polecenie cmdlet Get-AzDataLakeGen2Item zgłasza błąd, jeśli element nie istnieje.

Zobacz też