Set-Acl
ファイルやレジストリ キーなど、指定した項目のセキュリティ記述子を変更します。
構文
Set-Acl
[-Path] <String[]>
[-AclObject] <Object>
[-ClearCentralAccessPolicy]
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Acl
[-InputObject] <PSObject>
[-AclObject] <Object>
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Set-Acl
-LiteralPath <String[]>
[-AclObject] <Object>
[-ClearCentralAccessPolicy]
[-Passthru]
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
説明
このコマンドレットは、Windows プラットフォームでのみ使用できます。
コマンドレットは 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
して、 の ACL の値を Cat.txt 内 $DogACL
の値に変更します。
Path パラメーターの値は、Cat.txt ファイルへのパスです。 AclObject パラメーターの値はモデル ACL です。この場合、変数に保存されたDog.txtの $DogACL
ACL です。
例 2: パイプライン演算子を使用して記述子を渡す
Get-Acl -Path "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: 複数のファイルにセキュリティ記述子を適用する
$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 パラメーターは、隠しファイルを取得します。このパラメーターが指定されない場合、隠しファイルは除外されます (Recurse パラメーターはファイルではなくディレクトリで動作するため、 を使用c:\temp\*.txt
することはできません)。
パイプライン演算子 (|
) は、取得したファイルを表すオブジェクトを コマンドレットに Set-Acl
送信します。これにより、 AclObject パラメーターのセキュリティ記述子がパイプライン内のすべてのファイルに適用されます。
実際には、複数の項目に影響を与える可能性があるすべてのSet-Acl
コマンドで WhatIf パラメーターを使用することをお勧めします。 この場合、パイプラインの 2 番目のコマンドは になります Set-Acl -AclObject $NewAcl -WhatIf
。 このコマンドは、コマンドによって影響を受けるファイルを一覧表示します。 結果を確認したら、 WhatIf パラメーターを指定せずにコマンドをもう一度実行できます。
例 4: 継承を無効にし、継承されたアクセス規則を保持する
$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
$isProtected = $true
$preserveInheritance = $true
$NewAcl.SetAccessRuleProtection($isProtected, $preserveInheritance)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl
これらのコマンドは、既存の継承されたアクセス規則を保持しながら、親フォルダーからのアクセス継承を無効にします。
最初のコマンドでは、 コマンドレットを Get-Acl
使用して、Dog.txt ファイルのセキュリティ記述子を取得します。
次に、継承されたアクセス規則を明示的なアクセス規則に変換する変数が作成されます。 これに関連付けられているアクセス規則を継承から保護するには、 変数を に$true
設定します$isProtected
。 継承を許可するには、 を に設定 $isProtected
します $false
。 詳細については、「 アクセス規則の保護を設定する」を参照してください。
継承されたアクセス規則を$preserveInheritance
保持するか$false
、継承されたアクセス規則を削除するには、 変数を に$true
設定します。 その後、 SetAccessRuleProtection() メソッドを使用してアクセス規則の保護が更新されます。
最後のコマンドでは、 を使用 Set-Acl
して のセキュリティ記述子をDog.txtに適用します。 コマンドが完了すると、Pets フォルダーから継承されたDog.txtの ACL がDog.txtに直接適用され、Pets に追加された新しいアクセス ポリシーによってDog.txtへのアクセスは変更されません。
例 5: 管理者にファイルのフル コントロールを付与する
$NewAcl = Get-Acl -Path "C:\Pets\Dog.txt"
# Set properties
$identity = "BUILTIN\Administrators"
$fileSystemRights = "FullControl"
$type = "Allow"
# Create new rule
$fileSystemAccessRuleArgumentList = $identity, $fileSystemRights, $type
$fileSystemAccessRule = New-Object -TypeName System.Security.AccessControl.FileSystemAccessRule -ArgumentList $fileSystemAccessRuleArgumentList
# Apply new rule
$NewAcl.SetAccessRule($fileSystemAccessRule)
Set-Acl -Path "C:\Pets\Dog.txt" -AclObject $NewAcl
このコマンドにより、 BUILTIN\Administrators グループにDog.txt ファイルのフル コントロールが付与されます。
最初のコマンドでは、 コマンドレットを Get-Acl
使用して、Dog.txt ファイルのセキュリティ記述子を取得します。
次の変数が作成され、Dog.txt ファイルのフル コントロールが BUILTIN\Administrators グループに付与されます。 変数は$identity
、ユーザー アカウントの名前に設定されます。 変数は $fileSystemRights
FullControl に設定され、アクセス規則に関連付けられている操作の種類を指定する FileSystemRights 値のいずれかを指定できます。 $type
操作を許可または拒否するかどうかを指定する変数を "許可" に設定します。 変数は $fileSystemAccessRuleArgumentList
、新しい FileSystemAccessRule オブジェクトを作成するときに渡される引数リストです。 次に、新しい FileSystemAccessRule オブジェクトが作成され、 FileSystemAccessRule オブジェクトが SetAccessRule() メソッドに渡され、新しいアクセス規則が追加されます。
最後のコマンドでは、 を使用 Set-Acl
して のセキュリティ記述子をDog.txtに適用します。 コマンドが完了すると、 BUILTIN\Administrators グループはDog.txtを完全に制御できます。
パラメーター
-AclObject
目的のプロパティの値を備えた ACL を指定します。 Set-Acl
は、Path パラメーターまたは InputObject パラメーターで指定された項目の ACL を、指定されたセキュリティ オブジェクトの値と一致するように変更します。
コマンドの出力を Get-Acl
変数に保存し、 AclObject パラメーターを使用して変数を渡すか、コマンドを Get-Acl
入力します。
Type: | Object |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ClearCentralAccessPolicy
指定された項目から、集約型アクセス ポリシーを削除します。
Windows Server 2012以降、管理者は Active Directory とグループ ポリシーを使用して、ユーザーとグループの集約型アクセス ポリシーを設定できます。 詳細については、「動的Access Control: シナリオの概要」を参照してください。
このパラメーターは Windows PowerShell 3.0 で導入されました。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
コマンドレットの実行前に確認を求めるメッセージが表示されます。
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Exclude
指定した項目を除外します。 このパラメーターの値は、Path パラメーターを修飾します。 などのパス要素またはパターンを *.txt
入力します。 ワイルドカードを使用できます。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Filter
プロバイダーの形式や言語でフィルターを指定します。 このパラメーターの値は、Path パラメーターを修飾します。 ワイルドカードを使用できるかどうかなど、フィルターの構文はプロバイダーによって異なります。 フィルターは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、オブジェクトの取得時にフィルターを適用するため、他のパラメーターよりも効率的です。
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Include
指定した項目だけを変更します。 このパラメーターの値は、Path パラメーターを修飾します。
などのパス要素またはパターンを *.txt
入力します。 ワイルドカードを使用できます。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-InputObject
指定されたオブジェクトのセキュリティ記述子を変更します。 オブジェクトが格納されている変数、またはオブジェクトを取得するコマンドを入力します。
変更 Set-Acl
するオブジェクトを にパイプすることはできません。 代わりに、InputObject パラメーターをコマンド内で明示的に使用します。
このパラメーターは Windows PowerShell 3.0 で導入されました。
Type: | PSObject |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-LiteralPath
指定した項目のセキュリティ記述子を変更します。 Path と異なり、LiteralPath パラメーターの値は入力したとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符 ('
) で囲みます。
一重引用符は、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。
このパラメーターは Windows PowerShell 3.0 で導入されました。
Type: | String[] |
Aliases: | PSPath |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Passthru
変更されたセキュリティ記述子を表すオブジェクトを返します。 既定では、このコマンドレットによる出力はありません。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定した項目のセキュリティ記述子を変更します。 ファイルまたはレジストリ キーへのパスなどの項目へのパスを入力します。 ワイルドカードを使用できます。
セキュリティ オブジェクトを に Set-Acl
渡す場合 ( AclObject パラメーターまたは SecurityDescriptor パラメーターを使用するか、Get-Acl から にセキュリティ オブジェクトを Set-Acl
渡す) と 、Path パラメーター (名前と値) を省略すると、 Set-Acl
セキュリティ オブジェクトに含まれるパスが使用されます。
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-WhatIf
コマンドレットの実行時に発生する内容を示します。 このコマンドレットは実行されません。
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
ACL オブジェクトをこのコマンドレットにパイプできます。
セキュリティ記述子をこのコマンドレットにパイプできます。
出力
None
既定では、このコマンドレットは出力を返しません。
PassThru パラメーターを使用すると、このコマンドレットはセキュリティ オブジェクトを返します。 セキュリティ オブジェクトの種類は、項目の種類に応じて異なります。
メモ
このコマンドレットは、Windows プラットフォームでのみ使用できます。
コマンドレットは Set-Acl
、PowerShell ファイル システムとレジストリ プロバイダーによってサポートされています。 そのため、そのコマンドレットを使用して、ファイル、ディレクトリ、およびレジストリ キーのセキュリティ記述子を変更できます。
関連リンク
PowerShell
A cross-platform task automation solution made up of a command-line shell and a scripting language.
フィードバック
フィードバックの送信と表示