變更指定資源 (如檔案或登錄機碼) 的安全性描述元。

語法

Set-Acl [-Path] <string[]> [-AclObject] <ObjectSecurity> [-Exclude <string[]>] [-Filter <string>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]

描述

Set-Acl Cmdlet 會變更指定之資源 (如檔案或登錄機碼) 的安全性描述元,以符合您所提供之安全性描述元中的值。

若要使用 Set-Acl,請使用 Path 參數來識別要變更其安全性描述元的資源,並使用 AclObject 參數來提供要套用其值的安全性描述元。Set-Acl 會使用 AclObject 參數的值做為模型,並變更資源之安全性描述元中的值,以符合 AclObject 參數所指定之安全性描述元中的值。

參數

-AclObject <ObjectSecurity>

使用所要的屬性值指定 ACL。Set-Acl 會將 Path 參數所指定資源的 ACL 變更為符合指定的安全性物件中的值。

您可以將 Get-Acl 命令的輸出儲存至變數,再使用 AclObject 參數來傳遞變數,或是輸入 Get-Acl 命令。

必要?

true

位置?

2

預設值

接受管線輸入?

true (ByValue)

接受萬用字元?

false

-Exclude <string[]>

忽略指定的項目。此參數的值用於限定 Path 參數。輸入路徑元素或模式,例如 "*.txt"。允許使用萬用字元。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Filter <string>

指定以提供者的格式或語言表示的篩選器。此參數的值用於限定 Path 參數。篩選器的語法 (包括萬用字元的用法) 依提供者而定。篩選器比其他參數更有效率,因為提供者會在擷取物件時套用篩選器,而非等到 Windows PowerShell 擷取物件後才進行篩選。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Include <string[]>

只變更指定的項目。此參數的值用於限定 Path 參數。輸入路徑元素或模式,例如 "*.txt"。允許使用萬用字元。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-PassThru

傳回代表安全性描述元的物件。根據預設,此 Cmdlet 不會產生任何輸出。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Path <string[]>

識別要變更其安全性描述元的資源。輸入資源的路徑,例如檔案或登錄機碼的路徑。允許使用萬用字元。

若將安全性物件傳遞給 Set-Acl (使用 AclObject 參數,或從 Get-Acl 傳遞物件給 Set-Acl) 並且省略 Path 參數 (名稱和值),Set-Acl 會使用包含在安全性物件中的路徑。

必要?

true

位置?

1

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

-Confirm

在執行命令前先提示確認。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-WhatIf

說明執行命令時將會發生何種情況,但不會實際執行命令。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-UseTransaction

將命令加入現用交易中。此參數只有當交易進行中時才有效。如需詳細資訊,請參閱 about_Transactions。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

System.Security.AccessControl.ObjectSecurity

您可經由管道將安全性描述元輸出至 Set-Acl。

輸出

無或安全性物件

根據預設,Set-Acl 不會產生任何輸出。不過,如果您使用 -Passthru 參數,它就會產生安全性物件。安全性物件的類型是依資源類型而定。

附註

Windows PowerShell FileSystem 和 Registry 提供者支援 Set-Acl Cmdlet。因此,您可以用它來變更檔案、目錄和登錄機碼的安全性描述元。

若要為參數指定多重數值,請使用逗號來分隔數值。例如:"<參數名稱> <值1>, <值2>"。

範例 1

C:\PS>$DogACL = get-acl c:\dog.txt

C:\PS>set-acl -path C:\cat.txt -AclObject $DogACL

描述
-----------
這些命令會從 Dog.txt 檔案的安全性描述元,將這些值複製到 Cat.txt 檔案的安全性描述元。當命令完成時,Dog.txt 與 Cat.txt 檔案的安全性描述元將會完全相同。

第一個命令會使用 Get-Acl Cmdlet 取得 Dog.txt 檔案的安全性描述元。指定運算子 (=) 將安全性描述元儲存在 $DogACL 變數的值中。

第二個命令會使用 Set-Acl,將 Cat.txt 中的 ACL 值變更為 $DogACL 的值。

Path 參數的值為 Cat.txt 檔案的路徑。AclObject 參數的值是模型 ACL;在此例為 Dog.txt 的 ACL (儲存於 $DogACL 變數)。






範例 2

C:\PS>get-acl c:\dog.txt | set-acl -path C:\cat.txt

描述
-----------
這個命令與前一個範例中的命令幾乎相同,只是使用了管線運算子將 Get-Acl 命令中擷取的安全性描述元傳送至 Set-Acl 命令。

第一個命令會使用 Get-Acl Cmdlet 取得 Dog.txt 檔案的安全性描述元。管線運算子 (|) 將代表 Dog.txt 安全性描述元的物件傳遞給 Set-Acl 命令。

第二個命令會使用 Set-Acl,將 Dog.txt 的安全性描述元套用至 Cat.txt。當命令完成時,Dog.txt 與 Cat.txt 檔案的 ACL 將會完全相同。






範例 3

C:\PS>$newACL = get-acl file0.txt

C:\PS>get-childitem c:\temp -recurse -include *.txt -force | set-acl -aclobject $newacl

描述
-----------
這些命令將 File0.txt 檔案中的安全性描述元套用至 C:\Temp 目錄及其所有子目錄中的所有文字檔。

第一個命令取得目前目錄中 File0.txt 檔案的安全性描述元,並使用指定運算子 (=) 將它儲存在 $newACL 變數中。

管線中的第一個命令會使用 Get-ChildItem Cmdlet 來取得 C:\Temp 目錄中的所有文字檔。Recurse 參數將命令擴及 C:\temp 中的所有子目錄。Include 參數將擷取的檔案限制為那些帶有 ".txt" 副檔名的檔案。Force 參數可取得隱藏檔案,若不使用此參數,便會將這些檔案排除在外 (您不能使用 "c:\temp\*.txt",因為 Recurse 參數適用於目錄,但對檔案無效)。

管線運算子 (|) 將代表所擷取檔案的物件傳送到 Set-Acl 命令,後者再將 AclObject 參數中的安全性描述元套用至管線中的所有檔案。

實際上,最好的作法是使用 Whatif 參數搭配所有可影響多個資源的 Set-Acl 命令。在此例中,管線中的第二個命令將會是 "set-acl -aclobject $newacl -whatif"。這個命令會列出受到命令影響的檔案。在檢閱結果之後,您可以再一次執行此命令,但是這次不使用 Whatif 參數。






請參閱




目錄