ファイルやレジストリ キーなど、指定されたアイテムのセキュリティ記述子を変更します。
Syntax
Set-Acl <String> <Object> >] >]
Set-Acl <PSObject> <Object> >] >]
Set-Acl -LiteralPath <String> <Object> >] >]
Description
Set-Acl
コマンドレットは、ファイルまたはレジストリ キーなどの指定された項目のセキュリティ記述を、指定したセキュリティ記述子の値と一致するように変更します。Set-Acl
を使用するには、Path または InputObject パラメータを使用して、セキュリティ記述子を変更する項目を特定します。 次に、AclObject または SecurityDescriptor パラメータを使用して、適用したい値を持つセキュリティ記述子を指定します。 Set-Acl
は、提供された securitydescriptor を適用します。
Examples
Example 1: Copy a security descriptor from one file to another
$DogACL = Get-Acl -Path "C:\Dog.txt"Set-Acl -Path "C:\Cat.txt" -AclObject $DogACL
The these commands copy the values from the security descriptor of the Dog.txt file to the securitydescriptor of the Cat.txt file.は、AclObjectパラメータの値をモデルとして、その項目のセキュリティディスクリプタをAclObjectパラメータに一致させるために変更する。
最初のコマンドは、Get-Acl
コマンドレットを使用して、Dog.txtファイルのセキュリティディスクリプタを取得します。代入演算子 (=
) は、セキュリティ記述子を変数 $DogACL の値に格納します。
2番目のコマンドは、Set-Acl
を使用して Cat.txt の ACL の値を $DogACL
の値に変更します。
Pathパラメータの値は Cat.txt ファイルへのパスとします。 AclObjectparameterの値は、モデルのACL、この場合は$DogACL
変数に保存されたDog.txtの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.txtGet-ChildItem -Path "C:\temp" -Recurse -Include "*.txt" -Force | Set-Acl -AclObject $NewAcl
これらのコマンドは、File0.txt にあるセキュリティ記述子を適用します。
パイプラインの最初のコマンドは、C:\Temp
ディレクトリとそのすべてのサブディレクトリにあるすべてのテキスト ファイルに File0.txt ファイルのセキュリティ記述子を取得し、割り当て演算子 (=
) を使用してそれを $NewACL
変数に格納します。 Recurseパラメーターは、コマンドをC:\temp
のすべてのサブディレクトリに拡張します。 Includeパラメータは、取得するファイルを.txt
ファイル名拡張子を持つファイルに制限します。 Force パラメータは、他の方法では除外される隠しファイルを取得します。 (Recurse パラメーターはファイルではなくディレクトリで動作するため、c:\temp\*.txt
は使用できません。)
パイプライン演算子 (|
) は、取得したファイルを表すオブジェクトを Set-Acl
cmdlet に送信し、パイプライン内のすべてのファイルに対して AclObject パラメーター内のセキュリティ記述子が適用されます。 この場合、パイプラインの 2 番目のコマンドは Set-Acl -AclObject $NewAcl -WhatIf
となります。 このコマンドは、コマンドによって影響を受けるファイルを一覧表示します。
Example 4: Disable inheritance and preserve inherited access rules
$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
These commands are disable access inheritance from parent folders, but still preserving the existing inherited access rules.WhatIf parameterなしでコマンドを再度実行することができます。
最初のコマンドは、Get-Acl
コマンドレットを使用して Dog.txt ファイルのセキュリティ記述子を取得します。
次に、継承されたアクセス規則を明示的なアクセス規則に変換するための変数が作成されます。 これに関連するアクセス規則を継承から保護するには、$isProtected
変数を$true
に設定します。継承を許可するには、$isProtected
を $false
に設定します。 詳しくは,アクセス規則の保護設定を参照してください。$preserveInheritance
変数に$true
を設定すると,継承されたアクセス規則を保持し,falseを設定すると継承されたアクセス規則を削除します。
最後のコマンドは、Set-Acl
を使用して Dog.txt にセキュリティ記述子を適用します。 コマンドが完了すると、Petsフォルダから継承されたDog.txtのACLがDog.txtに直接適用され、Petsに追加された新しいアクセスポリシーはDog.txtへのアクセスを変更しません。
Example 5: Grant Administrators Full Control of the file
$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
This command will grant the BUILTINAdministrators group Full control of the Dog.txt.このコマンドは、Dogsフォルダを管理するBUILTINAの管理者グループにDoug.txtのフルコントロールを許可します。
最初のコマンドは、Get-Acl
コマンドレットを使用してDog.txtファイルのセキュリティ記述子を取得します。
次に、BUILTINAdministratorsグループにDog.txtファイルのフルコントロールを許可するための変数が作成されます。 $identity
変数には、ユーザー・アカウントの名前が設定されています。 FullControlに設定された$fileSystemRights
変数には、アクセスルールに関連する操作の種類を指定するFileSystemRights値のいずれかを指定することができる。 $type
変数に “Allow” を設定し、操作を許可するか拒否するかを指定する。 $fileSystemAccessRuleArgumentList
変数は、新しい FileSystemAccessRule オブジェクトを作成するときに渡される引数リストである。
最後のコマンドは、Set-Acl
を使用して Dog.txt にセキュリティ記述子を適用します。 このコマンドが完了すると、BUILTINaceousAdministratorsグループがDog.txtを完全に制御できるようになります。
Parameters
希望のプロパティ値でACLを指定します。 Set-Acl
は Path または InputObject パラメータで指定された項目の ACL を、指定されたセキュリティオブジェクトの値と一致するように変更します。
Get-Acl
コマンドの出力を変数に保存し、AclObject パラメータを使用してその変数を渡したり、Get-Acl
コマンドを入力することが可能です。
Type: | Object |
Position: | 1 |
初期値: | None | パイプライン入力に対応するようにしました。 | True |
ワイルドカード文字を受け入れる: | False |
指定した項目から中心アクセスポリシーの削除を実行します。
Windows Server 2012以降では、管理者はActive Directoryとグループポリシーを使用して、ユーザーとグループに対するセントラルアクセスポリシーを設定することができます。 詳細については、「動的アクセス制御」を参照してください。
このパラメーターは、Windows PowerShell 3.0から導入されました。
Type: | SwitchParameter |
Position: | Named |
初期値: | False |
パイプライン入力に同意する。 | False |
Accept wildcard characters: | False |
cmdlet 実行前に確認のためプロンプトが表示されます。
Type: | SwitchParameter |
Aliases: | cf | Position: | Named |
初期値です。 | False |
Accept pipeline input: | False |
Accept wildcard characters.Noteは、ワイルドカード文字を受け付けないようにします。 | False |
指定した項目を省く。 このパラメータの値は,Pathパラメータを修飾します。 *.txt
のようなapath要素またはパターンを入力します。 ワイルドカードも使用可能です。
Type: | String |
Position: | Named |
初期値: | なし |
パイプライン入力に許可します。 | False |
Accept Wildcard characters: | True |
プロバイダの形式または言語でのフィルタを指定します。 このパラメータの値はPathパラメータを修飾します。 ワイルドカードの使用を含むフィルタの構文は、プロバイダに依存します。 フィルタは、他のパラメータよりも効率的です。なぜなら、オブジェクトを取得した後に PowerShell がオブジェクトをフィルタリングするのではなく、オブジェクトを取得するときにプロバイダがフィルタを適用するからです。
Type: | String |
Position: | Named |
初期値: | None | パイプライン入力に同意します。 | False |
Accept wildcard characters: | True |
Changes Only the specified items.This is not used to the input. このパラメータの値は,Pathパラメータを修飾します。*.txt
のようなパス要素またはパターンを入力します。 ワイルドカードも使用可能です。
Type: | String |
Position: | Named |
初期値: | None |
パイプライン入力に対応しました。 | False |
Accept Wildcard characters: | True |
指定したオブジェクトのセキュリティ記述子を変更します。 オブジェクトを含む変数,またはオブジェクトを取得するコマンドを入力してください。
変更するオブジェクトをSet-Acl
にパイプすることはできません。 代わりに、コマンドでInputObjectパラメーターを明示的に使用します。
このパラメーターはWindows PowerShell 3.0に導入されました。
Type: | PSObject |
Position: | 0 |
初期値: | None |
パイプライン入力として許可されるようにしました。 | True |
ワイルドカード文字を受け入れる: | False |
-LiteralPath
このパラメーターは Windows PowerShell 3.0 で導入されました。
Type: | String |
Aliases: | PSPath |
Position: | Named |
デフォルト値: | None |
パイプライン入力を受け付けます。 | True |
Accept wildcard characters: | False |
-Passthru
変更したセキュリティディスクリプタを示すオブジェクトを返す:
変更を受けたオブジェクトを返します。 既定では、このコマンドレットは、何も出力を生成しません。
Type: | SwitchParameter |
Position: | Named |
初期値: | None |
パイプライン入力に同意します。 | False |
Accept wildcard characters: | False |
指定項目のセキュリティ記述子を変更します。 ファイルやレジストリキーのパスなど、項目へのパスを入力してください。
Set-Acl
にセキュリティ オブジェクトを渡し (AclObject またはSecurityDescriptor パラメータを使用、または Get-Acl から Set-Acl
にセキュリティ オブジェクトを渡す)、Path パラメータ (名前と値) を省略すると、Set-Acl
ではこれらのセキュリティ オブジェクトに含まれるパスが使用されます。
Type: | String |
Position: | 0 |
初期値: | None |
True | |
Accept wildcard characters: | True |
コマンドレットが実行するとどうなるか表示されます。 コマンドレットは実行されません。
Type: | SwitchParameter | ||
Aliases: | wi | Position: | Named |
初期値です。 | False | ||
Accept pipeline input: | False | ||
Accept wildcard characters: | False |
入力
システム.IO
ACL オブジェクトまたはセキュリティ記述子を Set-Acl
にパイプできます。
Outputs
FileSecurity
デフォルトでは、Set-Acl
では何も出力が生成されません。 しかし、Passthru パラメータを使用すると、セキュリティ・オブジェクトが生成されます。 セキュリティ オブジェクトの種類は、項目の種類に依存します。
Notes
このコマンドレットは、Windows プラットフォームでのみ使用可能です。
- Get-Acl
- FileSystemAccessRule
- ObjectSecurity.SetAccessRuleProtection
- FileSystemRights
[ファイル]、[ディレクトリ]、および[レジストリー]のセキュリティ記述子を変更するにはこれを使用することができるようになりました。