この記事では、階層型名前空間が有効になっているストレージ アカウントで、PowerShell を使用してディレクトリとファイルを作成および管理する方法を示します。
ディレクトリとファイルのアクセス制御リスト (ACL) を取得、設定、および更新する方法については、「Azure Data Lake Storage で PowerShell を使用して ACL を管理する」を参照してください。
リファレンス | Gen1 から Gen2 へのマッピング | フィードバックの送信
前提条件
Azure サブスクリプション。 詳細については、Azure 無料試用版の取得に関するページを参照してください。
階層型名前空間が有効になっているストレージ アカウント。 作成するには、こちらの手順に従います。
.NET Framework は 4.7.2 以降がインストールされていること。 詳細については、「.NET Framework のダウンロード」参照してください。
PowerShell バージョン
5.1以降。
PowerShell モジュールをインストールする
次のコマンドを使用して、インストールされている PowerShell のバージョンが
5.1以上であることを確認します。echo $PSVersionTable.PSVersion.ToString()お使いの PowerShell のバージョンをアップグレードするには、「既存の Windows PowerShell をアップグレードする」を参照してください。
Az.Storage モジュールをインストールします。
Install-Module Az.Storage -Repository PSGallery -ForcePowerShell モジュールのインストール方法の詳細については、「Azure PowerShell モジュールのインストール」を参照してください。
アカウントに接続する
Windows PowerShell コマンド ウィンドウを開き、Connect-AzAccount コマンドで Azure サブスクリプションにサインインし、画面上の指示に従います。
Connect-AzAccount自分の ID が複数のサブスクリプションに関連付けられていて、サブスクリプションを選択するように求められない場合は、アクティブなサブスクリプションを操作するストレージ アカウントのサブスクリプションに設定します。 この例では、
<subscription-id>プレースホルダーの値をサブスクリプションの ID に置き換えます。Select-AzSubscription -SubscriptionId <subscription-id>ストレージ アカウント コンテキストを取得します。
$ctx = New-AzStorageContext -StorageAccountName '<storage-account-name>' -UseConnectedAccount
コンテナーを作成する
コンテナーは、ファイルのファイル システムとして機能します。 New-AzStorageContainer コマンドレットを使用して作成できます。
この例では、my-file-system という名前のコンテナーを作成します。
$filesystemName = "my-file-system"
New-AzStorageContainer -Context $ctx -Name $filesystemName
ディレクトリを作成する
New-AzDataLakeGen2Item コマンドレットを使用してディレクトリ参照を作成します。
この例では、my-directory という名前のディレクトリをコンテナーに追加します。
$filesystemName = "my-file-system"
$dirname = "my-directory/"
New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory
この例では、同じディレクトリを追加しますが、アクセス許可、umask、プロパティ値、メタデータ値も設定します。
$dir = New-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname -Directory -Permission rwxrwxrwx -Umask ---rwx--- -Property @{"ContentEncoding" = "UDF8"; "CacheControl" = "READ"} -Metadata @{"tag1" = "value1"; "tag2" = "value2" }
ディレクトリのプロパティを表示する
この例では、Get-AzDataLakeGen2Item コマンドレットを使用してディレクトリを取得し、次にプロパティ値をコンソールに出力します。
$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
Note
コンテナーのルート ディレクトリを取得するには、-Path パラメーターを省略します。
ディレクトリの名前変更または移動
Move-AzDataLakeGen2Item コマンドレットを使用してディレクトリを名前変更または移動します。
この例では、ディレクトリの名前を my-directory から 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
Note
プロンプトを表示せずに上書きする場合は、-Force パラメーターを使用します。
この例では、my-directory という名前のディレクトリを my-directory-2 の (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
ディレクトリを削除する
Remove-AzDataLakeGen2Item コマンドレットを使用してディレクトリを削除します。
この例では、my-directory という名前のディレクトリを削除します。
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $dirname
-Force パラメーターを使用すると、プロンプトを表示せずにファイルを削除できます。
ディレクトリからダウンロードする
Get-AzDataLakeGen2ItemContent コマンドレットを使用してディレクトリからファイルをダウンロードします。
この例では、my-directory という名前のディレクトリから upload.txt という名前のファイルをダウンロードします。
$filesystemName = "my-file-system"
$filePath = "my-directory/upload.txt"
$downloadFilePath = "download.txt"
Get-AzDataLakeGen2ItemContent -Context $ctx -FileSystem $filesystemName -Path $filePath -Destination $downloadFilePath
ディレクトリの内容を一覧表示する
Get-AzDataLakeGen2ChildItem コマンドレットを使用してディレクトリの内容を一覧表示します。 省略可能なパラメーター -OutputUserPrincipalName を使用すると、ユーザーの名前 (オブジェクト ID ではなく) を取得できます。
この例では、my-directory という名前のディレクトリの内容を一覧表示します。
$filesystemName = "my-file-system"
$dirname = "my-directory/"
Get-AzDataLakeGen2ChildItem -Context $ctx -FileSystem $filesystemName -Path $dirname -OutputUserPrincipalName
次の例では、ディレクトリ内の各項目の ACL、Permissions、Group、および Owner の各プロパティを一覧表示します。
ACL プロパティの値を取得するには、-FetchProperty パラメーターが必要です。
$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
Note
コンテナーのルート ディレクトリの内容を一覧表示するには、-Path パラメーターを省略します。
ファイルをディレクトリにアップロードする
New-AzDataLakeGen2Item コマンドレットを使用してファイルをディレクトリにアップロードします。
この例では、upload.txt という名前のファイルを 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
この例では、同じファイルをアップロードしますが、その後に対象ファイルのアクセス許可、umask、プロパティ値、メタデータ値を設定します。 また、この例では、これらの値をコンソールに出力します。
$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
Note
コンテナーのルート ディレクトリにファイルをアップロードするには、-Path パラメーターを省略します。
ファイルのプロパティを表示する
この例では、Get-AzDataLakeGen2Item コマンドレットを使用してファイルを取得し、次にプロパティ値をコンソールに出力します。
$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
ファイルを削除する
Remove-AzDataLakeGen2Item コマンドレットを使用してファイルを削除します。
この例では、upload.txt という名前のファイルを削除します。
$filesystemName = "my-file-system"
$filepath = "upload.txt"
Remove-AzDataLakeGen2Item -Context $ctx -FileSystem $filesystemName -Path $filepath
-Force パラメーターを使用すると、プロンプトを表示せずにファイルを削除できます。
Gen1 から Gen2 へのマッピング
次の表は、Data Lake Storage Gen1 で使用するコマンドレットが、Data Lake Storage のコマンドレットにどのように対応するかを示しています。
Note
Azure Data Lake Storage Gen1 は廃止されました。 廃止の通知についての詳細は、こちらを参照してください。 Data Lake Storage Gen1 リソースにアクセスできなくなりました。 特別なサポートが必要な場合は、お問い合わせください。
| Data Lake Storage Gen1 のコマンドレット | Data Lake Storage コマンドレット | メモ |
|---|---|---|
| Get-AzDataLakeStoreChildItem | Get-AzDataLakeGen2ChildItem | 既定では、Get-AzDataLakeGen2ChildItem コマンドレットは、最初のレベルの子項目のみを一覧表示します。 -Recurse パラメーターは、子項目を再帰的に一覧表示します。 |
| Get-AzDataLakeStoreItem Get-AzDataLakeStoreItemAclEntry Get-AzDataLakeStoreItemOwner Get-AzDataLakeStoreItemPermission |
Get-AzDataLakeGen2Item | Get-AzDataLakeGen2Item コマンドレットの出力項目には、Acl、Owner、Group、Permission のプロパティが含まれます。 |
| Get-AzDataLakeStoreItemContent | Get-AzDataLakeGen2FileContent | Get-AzDataLakeGen2FileContent コマンドレットは、ファイルのコンテンツをローカル ファイルにダウンロードします。 |
| Move-AzDataLakeStoreItem | Move-AzDataLakeGen2Item | |
| New-AzDataLakeStoreItem | New-AzDataLakeGen2Item | このコマンドレットは、ローカル ファイルから新しいファイルのコンテンツをアップロードします。 |
| Remove-AzDataLakeStoreItem | Remove-AzDataLakeGen2Item | |
| Set-AzDataLakeStoreItemOwner Set-AzDataLakeStoreItemPermission Set-AzDataLakeStoreItemAcl |
Update-AzDataLakeGen2Item | Update-AzDataLakeGen2Item コマンドレットは、再帰的ではなく、1 つの項目のみを更新します。 再帰的に更新する場合は、Get-AzDataLakeStoreChildItem コマンドレットを使用して項目を一覧表示して、Update-AzDataLakeGen2Item コマンドレットに対してパイプライン処理します。 |
| Test-AzDataLakeStoreItem | Get-AzDataLakeGen2Item | 項目が存在しない場合、Get-AzDataLakeGen2Item コマンドレットはエラーを報告します。 |