Zarządzanie katalogami i plikami w usłudze Azure Data Lake Storage 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 Używanie programu PowerShell do zarządzania listami ACL w usłudze Azure Data Lake Storage.
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
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
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
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.
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
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>
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 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 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.
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 | 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. |