Set-Acl
指定されたリソース (ファイルやレジストリ キー) のセキュリティ記述子を変更します。
構文
Set-Acl [-Path] <string[]> [-AclObject] <ObjectSecurity> [-Exclude <string[]>] [-Filter <string>] [-Include <string[]>] [-PassThru] [-Confirm] [-WhatIf] [-UseTransaction] [<CommonParameters>]
説明
Set-Acl コマンドレットは、指定されたリソース (ファイルやレジストリ キー) のセキュリティ記述子を変更して、ユーザーが提供したセキュリティ記述子の値に一致させます。
Set-Acl を使用するには、変更するセキュリティ記述子を持つリソースを Path パラメーターで指定し、適用する値を持つセキュリティ識別子を AclObject パラメーターで提供します。Set-Acl は、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
セキュリティ記述子を表すオブジェクトを返します。既定では、このコマンドレットによる出力はありません。
必須 |
false |
位置 |
named |
既定値 |
|
パイプライン入力を許可する |
false |
ワイルドカード文字を許可する |
false |
-Path <string[]>
変更するセキュリティ記述子を持つリソースを指定します。ファイルやレジストリ キーなどのリソースのパスを入力します。ワイルドカードを使用できます。
(AclObject パラメーターを使用するか、Get-Acl から Set-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>
このコマンドレットは、次の共通パラメーターをサポートします: -Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer、および -OutVariable。詳細については、次を参照してください: about_Commonparameters.
入力と出力
入力値の型は、コマンドレットへのパイプが可能なオブジェクトの型です。戻り値の型は、コマンドレットによって返されるオブジェクトの型です。
入力 |
System.Security.AccessControl.ObjectSecurity パイプを使用して Set-Acl にセキュリティ記述子を渡すことができます。 |
出力 |
None またはセキュリティ オブジェクト 既定では、Set-Acl は出力を生成しません。ただし、-PassThru パラメーターを使用すると、セキュリティ オブジェクトが生成されます。セキュリティ オブジェクトの型は、リソースの種類によって異なります。 |
注
Set-Acl コマンドレットは、Windows PowerShell ファイル システムおよびレジストリ プロバイダーによってサポートされています。このため、ファイル、ディレクトリ、およびレジストリ キーのセキュリティ記述子を変更するために使用できます。
パラメーターとして複数の値を指定する場合は、各値をコンマで区切ります。たとえば、"<パラメーター名> <値 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 コマンドレットを使用して Dog.txt ファイルのセキュリティ記述子を取得します。代入演算子 (=) によってセキュリティ記述子が $DogACL 変数の値として保存されます。
2 番目のコマンドは、Set-Acl を使用して、Cat.txt の ACL の値を $DogACL の値に変更します。
Path パラメーターの値は Cat.txt ファイルのパスです。AclObject パラメーターの値はモデル ACL で、この例では、$DogACL 変数に保存されている Dog.txt の ACL です。
例 2
C:\PS>get-acl c:\dog.txt | set-acl -path C:\cat.txt
説明
-----------
このコマンドは、前の例のコマンドとほとんど同じです。ただし、このコマンドは、パイプライン演算子を使用して、Get-Acl コマンドで取得したセキュリティ記述子を Set-Acl コマンドに送ります。
最初のコマンドは、Get-Acl コマンドレットを使用して Dog.txt ファイルのセキュリティ記述子を取得します。パイプライン演算子 (|) は、Dog.txt のセキュリティ記述子を表すオブジェクトを Set-Acl コマンドに渡します。
2 番目のコマンドは、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 コマンドレットを使用して、C:\Temp ディレクトリにあるすべてのテキスト ファイルを取得します。Recurse パラメーターにより、このコマンドは C:\Temp のすべてのサブディレクトリに対して拡張されます。Include パラメーターにより、取得するファイルはファイル名拡張子が ".txt" のものに限定されます。Force パラメーターにより隠しファイルが取得されます。このパラメーターがない場合、隠しファイルは除外されます (Recurse パラメーターはディレクトリに対して動作しますが、ファイルに対しては動作しないため、"c:\temp\*.txt" は使用できません)。
パイプライン演算子 (|) によって、取得されたファイルを表すオブジェクトが Set-Acl コマンドに送られ、AclObject パラメーターのセキュリティ記述子がパイプライン内のすべてのファイルに適用されます。
実際には、複数のリソースに影響するすべての Set-Acl コマンドで Whatif パラメーターを使用することが最善の方法です。この場合、パイプラインの 2 番目のコマンドは "set-acl -aclobject $newacl -whatif" になります。このコマンドは、コマンドによって影響を受けるファイルを一覧表示します。結果を確認した後、Whatif パラメーターなしでコマンドを再実行できます。