Update-AzDataLakeGen2Item
更新屬性、元數據、許可權、ACL 和擁有者上的檔案或目錄。
語法
Update-AzDataLakeGen2Item
[-FileSystem] <String>
[-Path <String>]
[-Permission <String>]
[-Owner <String>]
[-Group <String>]
[-Property <Hashtable>]
[-Metadata <Hashtable>]
[-Acl <PSPathAccessControlEntry[]>]
[-Context <IStorageContext>]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Update-AzDataLakeGen2Item
-InputObject <AzureDataLakeGen2Item>
[-Permission <String>]
[-Owner <String>]
[-Group <String>]
[-Property <Hashtable>]
[-Metadata <Hashtable>]
[-Acl <PSPathAccessControlEntry[]>]
[-Context <IStorageContext>]
[-DefaultProfile <IAzureContextContainer>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
Update-AzDataLakeGen2Item Cmdlet 會更新屬性、元數據、許可權、ACL 和擁有者上的檔案或目錄。 只有在記憶體帳戶啟用階層命名空間時,此 Cmdlet 才有效。 您可以使用 “-EnableHierarchicalNamespace $true” 來執行 “New-AzStorageAccount” Cmdlet 來建立這類帳戶。
範例
範例 1:使用 3 個 ACL 專案建立 ACL 物件,並以遞歸方式將 ACL 更新為 Filesystem 中的所有專案
$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType user -Permission rwx
$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType group -Permission rw- -InputObject $acl
$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType other -Permission "rwt" -InputObject $acl
Get-AzDataLakeGen2ChildItem -FileSystem "filesystem1" -Recurse | Update-AzDataLakeGen2Item -ACL $acl
FileSystem Name: filesystem1
Path IsDirectory Length LastModified Permissions Owner Group
---- ----------- ------ ------------ ----------- ----- -----
dir1 True 2020-03-13 13:07:34Z rwxrw-rwt $superuser $superuser
dir1/file1 False 1024 2020-03-23 09:29:18Z rwxrw-rwt $superuser $superuser
dir2 True 2020-03-23 09:28:36Z rwxrw-rwt $superuser $superuser
此命令會先建立具有 3 acl 專案的 ACL 物件(使用 -InputObject 參數將 acl 專案新增至現有的 acl 物件),然後取得文件系統中的所有專案,並在專案上更新 acl。
範例 2:更新檔案上的所有屬性,並加以顯示
$file = Update-AzDataLakeGen2Item -FileSystem "filesystem1" -Path "dir1/file1" `
-Acl $acl `
-Property @{"ContentType" = "image/jpeg"; "ContentMD5" = "i727sP7HigloQDsqadNLHw=="; "ContentEncoding" = "UDF8"; "CacheControl" = "READ"; "ContentDisposition" = "True"; "ContentLanguage" = "EN-US"} `
-Metadata @{"tag1" = "value1"; "tag2" = "value2" } `
-Permission rw-rw-rwx `
-Owner '$superuser' `
-Group '$superuser'
$file
FileSystem Name: filesystem1
Path IsDirectory Length LastModified Permissions Owner Group
---- ----------- ------ ------------ ----------- ----- -----
dir1/file1 False 1024 2020-03-23 09:57:33Z rwxrw-rw- $superuser $superuser
$file.ACL
DefaultScope AccessControlType EntityId Permissions
------------ ----------------- -------- -----------
False User rwx
False Group rw-
False Other rw-
$file.Permissions
Owner : Execute, Write, Read
Group : Write, Read
Other : Write, Read
StickyBit : False
ExtendedAcls : False
$file.Properties.Metadata
Key Value
--- -----
tag2 value2
tag1 value1
$file.Properties
LastModified : 3/23/2020 9:57:33 AM +00:00
CreatedOn : 3/23/2020 9:29:18 AM +00:00
Metadata : {[tag2, value2], [tag1, value1]}
CopyCompletedOn : 1/1/0001 12:00:00 AM +00:00
CopyStatusDescription :
CopyId :
CopyProgress :
CopySource :
CopyStatus : Pending
IsIncrementalCopy : False
LeaseDuration : Infinite
LeaseState : Available
LeaseStatus : Unlocked
ContentLength : 1024
ContentType : image/jpeg
ETag : "0x8D7CF109B9878CC"
ContentHash : {139, 189, 187, 176...}
ContentEncoding : UDF8
ContentDisposition : True
ContentLanguage : EN-US
CacheControl : READ
AcceptRanges : bytes
IsServerEncrypted : True
EncryptionKeySha256 :
AccessTier : Cool
ArchiveStatus :
AccessTierChangedOn : 1/1/0001 12:00:00 AM +00:00
此命令會更新檔案上的所有屬性(ACL、許可權、擁有者、群組、元數據、屬性都可以使用任何結合更新),並在 Powershell 控制台中顯示它們。
範例 3:將 ACL 專案新增至目錄
## Get the origin ACL
$acl = (Get-AzDataLakeGen2Item -FileSystem "filesystem1" -Path 'dir1/dir3/').ACL
# Update permission of a new ACL entry (if ACL entry with same AccessControlType/EntityId/DefaultScope not exist, will add a new ACL entry, else update permission of existing ACL entry)
$acl = Set-AzDataLakeGen2ItemAclObject -AccessControlType user -EntityId $id -Permission rw- -InputObject $acl
# set the new acl to the directory
Update-AzDataLakeGen2Item -FileSystem "filesystem1" -Path 'dir1/dir3/' -ACL $acl
FileSystem Name: filesystem1
Path IsDirectory Length LastModified Permissions Owner Group
---- ----------- ------ ------------ ----------- ----- -----
dir1/dir3 True 2020-03-23 09:34:31Z rwxrw-rw-+ $superuser $superuser
此命令會從目錄取得 ACL、更新/新增 ACL 專案,並將設定回目錄。 如果具有相同 AccessControlType/EntityId/DefaultScope 的 ACL 專案不存在,則會新增 ACL 專案,否則會更新現有 ACL 項目的許可權。
參數
-Acl
設定檔案和目錄的 POSIX 訪問控制許可權。 使用 New-AzDataLakeGen2ItemAclObject 建立此物件。
類型: | PSPathAccessControlEntry[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
類型: | SwitchParameter |
別名: | cf |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Context
Azure 記憶體內容物件
類型: | IStorageContext |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-DefaultProfile
用於與 Azure 通訊的認證、帳戶、租用戶和訂用帳戶。
類型: | IAzureContextContainer |
別名: | AzureRmContext, AzureCredential |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-FileSystem
FileSystem 名稱
類型: | String |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Group
設定 Blob 的擁有群組。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-InputObject
要更新的 Azure Datalake Gen2 Item 物件
類型: | AzureDataLakeGen2Item |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-Metadata
指定目錄或檔案的元數據。
類型: | Hashtable |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Owner
設定 Blob 的擁有者。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Path
應更新之指定之 Filesystem 中的路徑。 可以是檔案或目錄,格式為 'directory/file.txt' 或 'directory1/directory2/'。 不指定此參數將會更新 Filesystem 的根目錄。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | True |
接受萬用字元: | False |
-Permission
設定檔案擁有者、檔案擁有者群組和其他專案的 POSIX 訪問許可權。 每個類別都可以被授與讀取、寫入或執行許可權。 支援符號 (rwxrw-rw-) 。 黏性位也受到支持,並且會根據其他類別的執行位是分別設定或未設定其他類別的執行位,以字母 t 或 T 表示其以字母 t 或 T 表示未設定的黏性位。與 ACL 搭配使用無效。
類型: | String |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Property
指定目錄或檔案的屬性。 檔案支持的屬性包括:CacheControl、ContentDisposition、ContentEncoding、ContentLanguage、ContentMD5、ContentType。 目錄支持的屬性包括:CacheControl、ContentDisposition、ContentEncoding、ContentLanguage。
類型: | Hashtable |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 Cmdlet 未執行。
類型: | SwitchParameter |
別名: | wi |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |