Set-Acl
變更指定專案的安全性描述元,例如檔案或登錄機碼。
語法
ByPath (預設值)
Set-Acl
[-Path] <String[]>
[-AclObject] <Object>
[[-CentralAccessPolicy] <String>]
[-ClearCentralAccessPolicy]
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
ByInputObject
Set-Acl
[-InputObject] <PSObject>
[-AclObject] <Object>
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
ByLiteralPath
Set-Acl
[-AclObject] <Object>
[[-CentralAccessPolicy] <String>]
-LiteralPath <String[]>
[-ClearCentralAccessPolicy]
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Description
Set-Acl Cmdlet 會變更指定專案的安全性描述元,例如檔案或登錄機碼,以符合您提供的安全性描述元中的值。
若要使用 Set-Acl,請使用 Path 或 InputObject 參數來識別您要變更其安全性描述元的專案。
然後,使用 AclObject 或 SecurityDescriptor 參數來提供具有您要套用值的安全性描述元。
Set-Acl 會套用提供的安全性描述元。
它會使用 AclObject 參數的值作為模型,並變更專案安全描述元中的值,以符合 AclObject 參數中的值。
範例
範例 1:將安全性描述元從一個檔案複製到另一個檔案
$DogACL = Get-Acl -Path "C:\Dog.txt"
Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL
這些命令會將值從 Dog.txt 檔案的安全性描述元複製到 Cat.txt 檔案的安全性描述元。 當命令完成時,Dog.txt 和 Cat.txt 檔案的安全性描述項完全相同。
第一個命令會使用 Get-Acl Cmdlet 來取得 Dog.txt 檔案的安全性描述元。 指派運算子 (=) 會將安全性描述元儲存在 $DogACL 變數的值中。
第二個命令會使用 Set-Acl,將 ACL 中的值變更為 Cat.txt $DogACL 中的值。
Path 參數的值是 Cat.txt 檔案的路徑。 AclObject 參數的值是模型 ACL,在此案例中,Dog.txt 的 ACL 儲存在$DogACL變數中。
範例 2:使用管線運算符傳遞描述元
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
此命令與上一個範例中的命令幾乎相同,不同之處在於它會使用管線運算元,將安全性描述元從 Get-Aclcommand 傳送至 Set-Acl 命令。
第一個命令會使用 Get-Acl Cmdlet 來取得 Dog.txt 檔案的安全性描述元。
管線運算子 (|) 會將代表 Dog.txt 安全性描述元的對象傳遞給 Set-Acl Cmdlet。
第二個命令會使用 Set-Acl,將 Dog.txt 的安全性描述元套用至 Cat.txt。
當命令完成時,Dog.txt 和 Cat.txt 檔案的 ACL 完全相同。
範例 3:將安全性描述元套用至多個檔案
$NewAcl = Get-Acl File0.txt
Get-ChildItem -Path "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 Cmdlet,此 Cmdlet 會將 AclObject 參數中的安全性描述元套用至管線中的所有檔案。
實際上,最好將 WhatIf 參數用於所有可能影響多個項目的 Set-Acl 命令。
在此情況下,管線中的第二個命令會是 “Set-Acl -AclObject $NewAcl -WhatIf”。
此命令會列出受命令影響的檔案。
檢閱結果之後,您可以再次執行命令,而不需 WhatIf 參數。
參數
-AclObject
指定一個 ACL,並設定其所需的屬性值。
Set-Acl 變更 Path 或 InputObject 參數所指定項目的 ACL,使其與所指定安全性物件中的值相符。
您可以將 Get-Acl 命令的輸出儲存在變數中,然後使用 AclObject 參數來傳遞變數,或輸入 Get-Acl 命令。
參數屬性
| 類型: | Object |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | 1 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-CentralAccessPolicy
建立或變更專案的集中存取原則。 輸入計算機上的中央存取原則的 CAP 識別碼或易記名稱。
從 Windows Server 2012 開始,系統管理員可以使用 Active Directory 和組策略來設定使用者和群組的集中存取原則。 如需詳細資訊,請參閱 動態存取控制:案例概觀。
此參數是在 Windows PowerShell 3.0 中引進的。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
ByPath
| Position: | 2 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
ByLiteralPath
| Position: | 2 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-ClearCentralAccessPolicy
從指定的項目移除集中存取原則。
從 Windows Server 2012 開始,系統管理員可以使用 Active Directory 和組策略來設定使用者和群組的集中存取原則。 如需詳細資訊,請參閱 動態存取控制:案例概觀。
此參數是在 Windows PowerShell 3.0 中引進的。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
ByPath
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
ByLiteralPath
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | cf |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Exclude
省略指定的項目。 此參數的值對 路徑 參數進行限定。 輸入路徑專案或模式,例如 「*.txt」。。 允許使用通配符。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Filter
以提供者的格式或語言指定篩選。 此參數的值對 路徑 參數進行限定。 篩選的語法,包括使用通配符,取決於提供者。 篩選比其他參數更有效率,因為提供者在擷取物件時會套用它們,而不是讓PowerShell在擷取對象之後篩選物件。
參數屬性
| 類型: | String |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Include
只變更指定的項目。 此參數的值對 路徑 參數進行限定。 輸入路徑專案或模式,例如 「*.txt」。。 允許使用通配符。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
變更指定之物件的安全性描述元。 輸入包含 物件的變數,或取得物件的命令。
您無法使用管線將物件變更為 Set-Acl。 在命令中,改為明確使用 InputObject 參數。
此參數是在 Windows PowerShell 3.0 中引進的。
參數屬性
| 類型: | PSObject |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
ByInputObject
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-LiteralPath
變更指定專案的安全性描述元。 不同於 Path,LiteralPath 參數的值完全按照輸入的方式使用。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。
此參數是在 Windows PowerShell 3.0 中引進的。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | PSPath |
參數集
ByLiteralPath
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-Passthru
傳回 物件,表示已變更的安全性描述元。 根據預設,此 Cmdlet 不會產生任何輸出。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Path
變更指定專案的安全性描述元。 輸入項目的路徑,例如檔案或登錄機碼的路徑。 允許使用通配符。
如果您將安全性對象傳遞至 Set-Acl(使用 AclObject 或 SecurityDescriptor 參數,或將安全性物件從 Get-Acl 傳遞至 Set-Acl),並省略 Path 參數(名稱和值),Set-Acl 會使用安全性物件中包含的路徑。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
參數集
ByPath
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-UseTransaction
在作用中交易中包含 命令。 只有在交易進行中時,此參數才有效。 如需詳細資訊,請參閱 about_Transactions。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | usetx |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 指令未執行。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 無線 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 Cmdlet 支援一般參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
System.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor
您可以使用管線將 ACL 物件或安全性描述元傳送至 Set-Acl。
輸出
FileSecurity
根據預設,Set-Acl 不會產生任何輸出。
不過,如果您使用 Passthru 參數,它會產生安全性物件。
安全性物件的類型取決於項目的類型。
備註
PowerShell 檔案系統和登錄提供者支援 Set-Acl Cmdlet。 因此,您可以使用它來變更檔案、目錄和登錄機碼的安全性描述項。