Set-Acl

Module: Microsoft.PowerShell.Security

ファイルやレジストリ キーなど、指定されたアイテムのセキュリティ記述子を変更します。

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-Aclcmdlet に送信し、パイプライン内のすべてのファイルに対して 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

-AclObject

希望のプロパティ値でACLを指定します。 Set-Acl は Path または InputObject パラメータで指定された項目の ACL を、指定されたセキュリティオブジェクトの値と一致するように変更します。

Get-Aclコマンドの出力を変数に保存し、AclObject パラメータを使用してその変数を渡したり、Get-Aclコマンドを入力することが可能です。

Type: Object
Position: 1
初期値: None
パイプライン入力に対応するようにしました。 True
ワイルドカード文字を受け入れる: False
-ClearCentralAccessPolicy

指定した項目から中心アクセスポリシーの削除を実行します。

Windows Server 2012以降では、管理者はActive Directoryとグループポリシーを使用して、ユーザーとグループに対するセントラルアクセスポリシーを設定することができます。 詳細については、「動的アクセス制御」を参照してください。

このパラメーターは、Windows PowerShell 3.0から導入されました。

Type: SwitchParameter
Position: Named
初期値: False
パイプライン入力に同意する。 False
Accept wildcard characters: False
-Confirm

cmdlet 実行前に確認のためプロンプトが表示されます。

Type: SwitchParameter
Aliases: cf
Position: Named
初期値です。 False
Accept pipeline input: False
Accept wildcard characters.Noteは、ワイルドカード文字を受け付けないようにします。 False

-Exclude

指定した項目を省く。 このパラメータの値は,Pathパラメータを修飾します。 *.txtのようなapath要素またはパターンを入力します。 ワイルドカードも使用可能です。

Type: String
Position: Named
初期値: なし
パイプライン入力に許可します。 False
Accept Wildcard characters: True
-Filter

プロバイダの形式または言語でのフィルタを指定します。 このパラメータの値はPathパラメータを修飾します。 ワイルドカードの使用を含むフィルタの構文は、プロバイダに依存します。 フィルタは、他のパラメータよりも効率的です。なぜなら、オブジェクトを取得した後に PowerShell がオブジェクトをフィルタリングするのではなく、オブジェクトを取得するときにプロバイダがフィルタを適用するからです。

Type: String
Position: Named
初期値: None
パイプライン入力に同意します。 False
Accept wildcard characters: True
-Include

Changes Only the specified items.This is not used to the input. このパラメータの値は,Pathパラメータを修飾します。*.txtのようなパス要素またはパターンを入力します。 ワイルドカードも使用可能です。

Type: String
Position: Named
初期値: None
パイプライン入力に対応しました。 False
Accept Wildcard characters: True
-InputObject

指定したオブジェクトのセキュリティ記述子を変更します。 オブジェクトを含む変数,またはオブジェクトを取得するコマンドを入力してください。

変更するオブジェクトをSet-Aclにパイプすることはできません。 代わりに、コマンドでInputObjectパラメーターを明示的に使用します。

このパラメーターはWindows PowerShell 3.0に導入されました。

Type: PSObject
Position: 0
初期値: None
パイプライン入力として許可されるようにしました。 True
ワイルドカード文字を受け入れる: False

-LiteralPath

指定した項目のセキュリティ記述子を変更します。 Path とは異なり、LiteralPath パラメータの値は、入力されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 一重引用符は、PowerShell にいかなる文字もエスケープシーケンスとして解釈しないように指示します。

このパラメーターは 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
-Path

指定項目のセキュリティ記述子を変更します。 ファイルやレジストリキーのパスなど、項目へのパスを入力してください。

Set-Acl にセキュリティ オブジェクトを渡し (AclObject またはSecurityDescriptor パラメータを使用、または Get-Acl から Set-Acl にセキュリティ オブジェクトを渡す)、Path パラメータ (名前と値) を省略すると、Set-Acl ではこれらのセキュリティ オブジェクトに含まれるパスが使用されます。

パイプライン入力に許可されることです。

Type: String
Position: 0
初期値: None
True
Accept wildcard characters: True
-WhatIf

コマンドレットが実行するとどうなるか表示されます。 コマンドレットは実行されません。

Type: SwitchParameter
Aliases: wi Position: Named
初期値です。 False
Accept pipeline input: False
Accept wildcard characters: False

入力

システム.IO

Accept input: FALSE FALSE FALSE

ACL オブジェクトまたはセキュリティ記述子を Set-Acl にパイプできます。

Outputs

FileSecurity

デフォルトでは、Set-Acl では何も出力が生成されません。 しかし、Passthru パラメータを使用すると、セキュリティ・オブジェクトが生成されます。 セキュリティ オブジェクトの種類は、項目の種類に依存します。

Notes

このコマンドレットは、Windows プラットフォームでのみ使用可能です。

  • Get-Acl
  • FileSystemAccessRule
  • ObjectSecurity.SetAccessRuleProtection
  • FileSystemRights
  • FileSystemAccessRule
  • ObjectSecurity.SetAccessRuleProtection
  • Get-Acl
  • [ファイル]、[ディレクトリ]、および[レジストリー]のセキュリティ記述子を変更するにはこれを使用することができるようになりました。

    コメントを残す

    メールアドレスが公開されることはありません。