PowerShell Cmdlet - Set-Acl
 記事記号:[mg1980] 初版:2011/Sep/30

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    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 パラメーターを修飾します。ワイルドカードを使用できるかどうかなど、
        フィルターの構文はプロバイダーによって異なります。フィルターは他のパラメ
        ーターよりも効率が良い方法です。これは、オブジェクトを取得した後に Windo
        ws PowerShell がオブジェクトをフィルターするのではなく、オブジェクトを取
        得する際にプロバイダーがフィルターを適用するためです。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Include <string[]>
        指定した項目だけを変更します。このパラメーターの値は、Path パラメーター
        を修飾します。"*.txt" などのパス要素またはパターンを入力します。ワイルド
        カードを使用できます。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -PassThru [<SwitchParameter>]
        セキュリティ記述子を表すオブジェクトを返します。既定では、このコマンドレ
        ットによる出力はありません。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Path <string[]>
        変更するセキュリティ記述子を持つリソースを指定します。ファイルやレジスト
        リ キーなどのリソースのパスを入力します。ワイルドカードを使用できます。
        
        (AclObject パラメーターを使用するか、Get-Acl から Set-Acl にオブジェクト
        を渡すことによって) セキュリティ オブジェクトを Set-Acl に渡し、Path パ
        ラメーター (名前と値) を省略した場合、Set-Acl ではセキュリティ オブジェ
        クトに含まれているパスが使用されます。
        
        必須                         true
        位置                         1
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    -Confirm [<SwitchParameter>]
        コマンドを実行する前に確認メッセージを表示します。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -WhatIf [<SwitchParameter>]
        実際にコマンドを実行せずに、コマンドを実行すると何が起きるかを出力します。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -UseTransaction [<SwitchParameter>]
        コマンドを有効なトランザクションに含めます。このパラメーターは、トランザ
        クションの進行中のみ有効です。詳細については、「about_Transactions」を参
        照してください。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help 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 ファイルのセキュ
    リティ記述子を取得します。代入演算子 (=) によってセキュリティ記述子が $DogAC
    L 変数の値として保存されます。
    
    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.t
    xt に適用します。コマンドが終了したときの 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 -aclobj
    ect $newacl
    
    説明
    -----------
    これらのコマンドは、File0.txt ファイルのセキュリティ記述子を、C:\Temp ディレ
    クトリおよびそのすべてのサブディレクトリに存在するすべてのテキスト ファイル
    に適用します。
    
    最初のコマンドは、現在のディレクトリにある File0.txt ファイルのセキュリティ
    記述子を取得し、代入演算子 (=) を使用して $newACL 変数に保存します。
    
    パイプラインの最初のコマンドは、Get-ChildItem コマンドレットを使用して、C:\T
    emp ディレクトリにあるすべてのテキスト ファイルを取得します。Recurse パラメ
    ーターにより、このコマンドは C:\Temp のすべてのサブディレクトリに対して拡張
    されます。Include パラメーターにより、取得するファイルはファイル名拡張子が "
    .txt" のものに限定されます。Force パラメーターにより隠しファイルが取得されま
    す。このパラメーターがない場合、隠しファイルは除外されます (Recurse パラメー
    ターはディレクトリに対して動作しますが、ファイルに対しては動作しないため、"c
    :\temp\*.txt" は使用できません)。
    
    パイプライン演算子 (|) によって、取得されたファイルを表すオブジェクトが Set-
    Acl コマンドに送られ、AclObject パラメーターのセキュリティ記述子がパイプライ
    ン内のすべてのファイルに適用されます。
    
    実際には、複数のリソースに影響するすべての Set-Acl コマンドで Whatif パラメ
    ーターを使用することが最善の方法です。この場合、パイプラインの 2 番目のコマ
    ンドは "set-acl -aclobject $newacl -whatif" になります。このコマンドは、コマ
    ンドによって影響を受けるファイルを一覧表示します。結果を確認した後、Whatif 
    パラメーターなしでコマンドを再実行できます。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=113389
    Get-Acl 
    	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Cmdlet、Set-Acl
ご利用数: 1912581
感想・要望・問い合わせは こちら