Set-Acl
ファイルやレジストリ キーなど、指定した項目のセキュリティ記述子を変更します。
構文
Set-Acl
[-Path] <String[]>
[-AclObject] <Object>
[[-CentralAccessPolicy] <String>]
[-ClearCentralAccessPolicy]
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Set-Acl
[-InputObject] <PSObject>
[-AclObject] <Object>
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
Set-Acl
-LiteralPath <String[]>
[-AclObject] <Object>
[[-CentralAccessPolicy] <String>]
[-ClearCentralAccessPolicy]
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[<CommonParameters>]
説明
Set-Acl
コマンドレットは、指定したアイテムのセキュリティ記述子 (ファイルやレジストリ キーなど) を、指定したセキュリティ記述子の値と一致するように変更します。
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 コマンドレットを使用して、Dog.txt ファイルのセキュリティ記述子を取得します。 代入演算子 (=) は、$DogACL 変数の値にセキュリティ記述子を格納します。
2 番目のコマンドは、 Set-Acl
を使用して、Cat.txt の ACL の値を $DogACL の値に変更します。
Path パラメーターの値は、Cat.txt ファイルへのパスです。 AclObject パラメーターの値はモデル ACL で、この場合は $DogACL 変数に保存されている Dog.txt の ACL です。
例 2: パイプライン演算子を使用して記述子を渡す
Get-Acl -Path "C:\Dog.txt" | Set-Acl -Path "C:\Cat.txt"
このコマンドは、前の例のコマンドとほぼ同じですが、パイプライン演算子を使用して Get-Aclcommand から Set-Acl
コマンドにセキュリティ記述子を送信する点が異なります。
最初のコマンドでは、 Get-Acl コマンドレットを使用して、Dog.txt ファイルのセキュリティ記述子を取得します。
パイプライン演算子 (|) は、Dog.txt セキュリティ記述子を表すオブジェクトを Set-Acl
コマンドレットに渡します。
2 番目のコマンドでは、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 コマンドレットを使用して、C:\Temp ディレクトリ内のすべてのテキスト ファイルを取得します。 Recurse パラメーターは、コマンドを C:\temp のすべてのサブディレクトリに拡張します。Include パラメータは、取得するファイルをファイル名拡張子が ".txt" のファイルに限定します。 Force パラメーターは非表示のファイルを取得します。それ以外の場合は除外されます。 ("c:\temp*.txt" を使用することはできません。 これは、Recurse パラメーターがファイルではなくディレクトリに対して機能するためです。
パイプライン演算子 (|) は、取得したファイルを表すオブジェクトを Set-Acl
コマンドレットに送信し、 AclObject パラメーターのセキュリティ記述子をパイプライン内のすべてのファイルに適用します。
実際には、WhatIf パラメーターを、複数の項目に影響を与える可能性があるすべての Set-Acl
コマンドと共に使用することをお勧めします。
この場合、パイプラインの 2 番目のコマンドは "Set-Acl -AclObject $NewAcl -WhatIf
" になります。
このコマンドは、コマンドの影響を受けるファイルを一覧表示します。
結果を確認したら、WhatIf パラメーターを せずにコマンドをもう一度実行できます。
パラメーター
-AclObject
必要なプロパティ値を持つ ACL を指定します。
Set-Acl
、Path または inputObject パラメーター で指定された項目の ACL を、指定したセキュリティ オブジェクトの値と一致するように変更します。
Get-Acl コマンドの出力を変数に保存し、 AclObject パラメーターを使用して変数を渡すか、Get-Acl コマンドを入力できます。
型: | Object |
配置: | 1 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-CentralAccessPolicy
アイテムの集約型アクセス ポリシーを確立または変更します。 コンピューター上の集約型アクセス ポリシーの CAP ID またはフレンドリ名を入力します。
Windows Server 2012 以降では、管理者は Active Directory とグループ ポリシーを使用して、ユーザーとグループの集約型アクセス ポリシーを設定できます。 詳細については、「動的アクセス制御: シナリオの概要」を参照してください。
このパラメーターは、Windows PowerShell 3.0 で導入されました。
型: | String |
配置: | 2 |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-ClearCentralAccessPolicy
指定した項目から集約型アクセス ポリシーを削除します。
Windows Server 2012 以降では、管理者は Active Directory とグループ ポリシーを使用して、ユーザーとグループの集約型アクセス ポリシーを設定できます。 詳細については、「動的アクセス制御: シナリオの概要」を参照してください。
このパラメーターは、Windows PowerShell 3.0 で導入されました。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Exclude
指定した項目を省略します。 このパラメーターの値は、Path パラメーターを修飾します。 "*.txt" などのパス要素またはパターンを入力します。 ワイルドカードを使用できます。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-Filter
プロバイダーの形式または言語でフィルターを指定します。 このパラメーターの値は、Path パラメーターを修飾します。 ワイルドカードの使用を含むフィルターの構文は、プロバイダーによって異なります。 フィルターは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、オブジェクトの取得時にプロバイダーによって適用されるため、他のパラメーターよりも効率的です。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-Include
指定した項目のみを変更します。 このパラメーターの値は、Path パラメーターを修飾します。 "*.txt" などのパス要素またはパターンを入力します。 ワイルドカードを使用できます。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-InputObject
指定したオブジェクトのセキュリティ記述子を変更します。 オブジェクトを含む変数、またはオブジェクトを取得するコマンドを入力します。
変更するオブジェクトを Set-ACL にパイプすることはできません。 代わりに、コマンドで InputObject パラメーターを明示的に使用します。
このパラメーターは、Windows PowerShell 3.0 で導入されました。
型: | PSObject |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-LiteralPath
指定した項目のセキュリティ記述子を変更します。 Pathとは異なり、LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。
このパラメーターは、Windows PowerShell 3.0 で導入されました。
型: | String[] |
Aliases: | PSPath |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Passthru
変更されたセキュリティ記述子を表すオブジェクトを返します。 既定では、このコマンドレットは出力を生成しません。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Path
指定した項目のセキュリティ記述子を変更します。 ファイルまたはレジストリ キーへのパスなど、項目へのパスを入力します。 ワイルドカードを使用できます。
セキュリティ オブジェクトを Set-Acl
に渡す場合 (AclObject を使用するか、SecurityDescriptor パラメーターを するか、Get-Acl から Set-Acl
にセキュリティ オブジェクトを渡します)、Path パラメーター (名前と値) を省略すると、セキュリティ オブジェクトに含まれるパスが使用 Set-Acl
。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-UseTransaction
アクティブなトランザクションにコマンドを含みます。 このパラメーターは、トランザクションが進行中の場合にのみ有効です。 詳細については、「about_Transactions」を参照してください。
型: | SwitchParameter |
Aliases: | usetx |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
System.Security.AccessControl.ObjectSecurity, System.Security.AccessControl.CommonSecurityDescriptor
ACL オブジェクトまたはセキュリティ記述子を Set-Acl
にパイプ処理できます。
出力
既定では、Set-Acl
は出力を生成しません。
ただし、 Passthru パラメーターを使用すると、セキュリティー・オブジェクトが生成されます。
セキュリティ オブジェクトの種類は、アイテムの種類によって異なります。
メモ
Set-Acl
コマンドレットは、PowerShell ファイル システムとレジストリ プロバイダーによってサポートされています。 そのため、これを使用して、ファイル、ディレクトリ、およびレジストリ キーのセキュリティ記述子を変更できます。