PowerShell Provider - FileSystem
 記事記号:[me1507] 初版:2011/May/10

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

プロバイダー名
    FileSystem
    
ドライブ
    C, D
    
概要
    ファイルおよびディレクトリへのアクセスを提供します。
    
説明
    Windows PowerShell ファイルシステム プロバイダーを使用すると、Windows PowerS
    hell でファイルやディレクトリを取得、追加、変更、クリア、および削除できます。
    
    ファイルシステム プロバイダーでは、ネットワーク共有に割り当てられたドライブを
    含め、コンピューターに構成されている論理ドライブに対応する Windows PowerShell 
    ドライブを公開します。たとえば、フロッピー ディスク ドライブを 1 台、ハード 
    ディスク ドライブを 1 台、そしてネットワーク共有ディレクトリを 1 つ割り当てら
    れたコンピューターでは、A、C、および Z というドライブを持っているとします。Fi
    leSystem プロバイダーは、A、C、および Z に直接対応する Windows PowerShell ド
    ライブを公開するため、Windows PowerShell 内からこれらのドライブを参照できます。
    たとえば、次の例で示しているように、C ドライブを参照するには C: を使用します。
    
       get-childitem c:
    
    このコマンドは、ファイルやディレクトリを含め、C ドライブのすべての内容を返し
    ます。FileSystem プロバイダー経由で特定のディレクトリまたはファイルを参照する
    場合は、そのディレクトリまたはファイルを特定できるよう必要な情報を提供する必
    要があります。したがって、場合によっては完全修飾名を提供する必要があります。
    完全修飾名には、ドライブ名 (コロン付き)、ディレクトリ名とサブディレクトリ名、
    およびファイル名 (該当する場合) が含まれます。たとえば、次の例で示しているの
    は、C ドライブの Windows ディレクトリの System32 サブディレクトリにある Shel
    l.dll ファイルの完全修飾名です。
    
    c:\windows\system32\shell.dll
    
    完全修飾名の各要素は、円記号 (\) で区切ります。Windows PowerShell では、さま
    ざまな他のシェルと一貫性を保てるようにスラッシュ (/) も使用できるようになっ
    ています。
    
    場合によっては、ファイルまたはディレクトリの参照時に完全修飾名を記述する必要
    がないこともあります。たとえば、現在作業している場所にあるファイルにアクセス
    する場合はファイル名のみを記述するだけで済みます。現在作業している場所が c:\
    windows である場合は、次のコマンドを使用して、このディレクトリにあるすべての 
    .dll ファイルの一覧を表示できます。
    
       get-childitem *.dll
    
    作業ディレクトリが c:\windows 以外 (c:\program files\Windows PowerShell など)
    の場合、完全修飾名を使用しなければならない状況もあり得ます。
    
       get-childitem c:\windows\*.dll
    
    場所が相対参照できる場合もあります。作業場所が c:\windows で、c:\windows\sys
    tem32 ディレクトリにある .dll ファイルの一覧を表示する場合は、次のコマンドを
    使用します。
    
       get-childitem .\system32\*.dll
    
    \system32 の前にあるピリオドは、現在の作業場所を表します。
    
    現在の作業場所がファイルシステム ドライブ以外のドライブになる状況もあり得ま
    す。この場合は、対象ドライブの名前を常に参照に含める必要があります。たとえば、
    現在の作業場所が env: ドライブだとします。C ドライブの内容を表示するには、次
    のコマンドを使用します。
    
       get-childitem c:
    
機能
    
タスク
    タスク: ファイルシステムを移動する
        
        -------------------------- 例 1 --------------------------
        
        次のコマンドは、現在の場所を取得します。
        
        get-location
        
        Get-Location コマンドレットには、Windows コマンド プロンプトの cd コマン
        ドおよび UNIX の pwd コマンドのようなコマンド機能があります。詳細について
        は、次のように入力してヘルプを参照してください。
        
            get-help get-location
        -------------------------- 例 2 --------------------------
        
        次のコマンドは、現在の場所を設定します。
        
        set-location C:
        
    タスク: ファイルとディレクトリ情報を取得する
        
        -------------------------- 例 1 --------------------------
        
        次のコマンドは、現在のディレクトリにあるすべてのファイルとディレクトリを
        取得します。
        
        get-childitem
        
        
        既定では、Get-ChildItem コマンドレットの動作は再帰的ではありません。この
        コマンドを実行したときに現在のディレクトリにファイルおよびフォルダーが存
        在する場合、System.IO.FileInfo オブジェクトと System.IO.DirectoryInfo オ
        ブジェクトが返されます。
        -------------------------- 例 2 --------------------------
        
        次のコマンドは、Get-ChildItem を使用して、現在のディレクトリにあるすべて
        のファイルとディレクトリを取得します。
        
        get-childitem | where-object {!$_.psiscontainer}
        
        
        結果はパイプを使用して Where-Object に渡されます。このとき、PSIsContaine
        r プロパティがチェックされ、コンテナーではない (!) オブジェクトのみがパ
        イプラインを通過します。
        -------------------------- 例 3 --------------------------
        
        次のコマンドは、Get-ChildItem を使用して、現在のディレクトリにあるすべて
        のファイルとディレクトリを取得します。結果はパイプを使用して Where-Objec
        t に渡されます。このとき、PSIsContainer プロパティがチェックされ、コンテ
        ナーであるオブジェクトのみがパイプラインを通過します。
        
        get-childitem | where-object {$_.psiscontainer}
        
        -------------------------- 例 4 --------------------------
        
        次のコマンドは、Get-ChildItem を使用して、現在のディレクトリにあるすべて
        のファイルとディレクトリを取得します。
        
        get-item -path a | format-list *
        
        結果はパイプを使用して Where-Object コマンドレットに渡されます。このとき、
        PSIsContainer プロパティがチェックされ、コンテナーであるオブジェクトのみ
        がパイプラインを通過します。
        -------------------------- 例 5 --------------------------
        
        このコマンドは、Get-Item コマンドレットを使用して Test.txt ファイルに関す
        る情報を取得します。
        
        get-item -path test.txt | format-list *
        
        Format-List コマンドレットを使用して、結果のオブジェクトのすべてのプロパ
        ティを表示します。
        
    タスク: ファイルとディレクトリをコピーする
    
        -------------------------- 例 1 --------------------------
        
        次のコマンドは、A.txt ファイルを C:\A ディレクトリから C:\A\Bb ディレク
        トリにコピーします。
        
        copy-item -path C:\a\a.txt -destination C:\a\bb\a.txt
        
        コピー先のディレクトリにあるファイルは、確認メッセージなしで上書きされま
        す。
        -------------------------- 例 2 --------------------------
        
        このコマンドは、C:\A\Bb ディレクトリにある、.txt というファイル名拡張子
        を持つすべてのファイルを C:\A\Cc\Ccc\ ディレクトリにコピーします。
        
        copy-item -path C:\a\bb\*.txt -destination C:\a\cc\ccc\
        
        ファイル名は元のファイル名を使用します。このコマンドは、コピー先のディレ
        クトリにある既存のファイルを確認メッセージなしで上書きします。
        -------------------------- 例 3 --------------------------
        
        C:\a ディレクトリにあるすべてのディレクトリとファイルを C:\c ディレクトリ
        にコピーします。コピーするディレクトリのいずれかと同じディレクトリがコピ
        ー先に既に存在する場合、Force パラメーターを指定しない限り、コマンドは失
        敗します。
        
        copy-item -path C:\a\* -destination C:\c -recurse
        
    タスク: ファイルとディレクトリを移動する
        
        -------------------------- 例 1 --------------------------
        
        次のコマンドは、C:\A ディレクトリにある C.txt ファイルを C:\A\Aa ディレ
        クトリに移動します。
        
        move-item -path C:\a\c.txt -destination C:\a\aa
        
        このコマンドは、同じ名前の既存のファイルがあっても自動的に上書きすること
        はありません。既存のファイルを強制的に上書きするには、Force パラメーター
        を指定します。
        -------------------------- 例 2 --------------------------
        
        このコマンドを実行すると、C:\A ディレクトリとそのすべての内容が C:\B デ
        ィレクトリに移動します。
        
        move-item -path C:\a -destination C:\b
        
        現在の場所であるディレクトリを移動することはできません。
        
    タスク: ファイルの内容を管理する
        
        -------------------------- 例 1 --------------------------
        
        次のコマンドは、"test content" という文字列を Test.txt ファイルに追加し
        ます。
        
        add-content -path test.txt -value "test content"
        
        Test.txt ファイルの既存の内容は削除されません。
        -------------------------- 例 2 --------------------------
        
        次のコマンドは、Test.txt ファイルの内容を取得し、コンソールに表示します。
        
        get-content -path test.txt
        
        ファイルの内容は、パイプを使用して別のコマンドレットに渡すことができます。
        たとえば、次のコマンドを使用すると、Test.txt ファイルの内容が読み取られ、
        ConvertTo-HTML コマンドレットに入力として渡されます。
        
        get-content  -path test.txt | convertto-html
        -------------------------- 例 3 --------------------------
        
        次のコマンドは、Test.txt ファイルの内容を "test content" という文字列で
        置き換えます。
        
        set-content -path test.txt -value "test content"
        
        このコマンドは Test.txt の内容を上書きします。New-Item コマンドレットの 
        Value パラメーターを使用すると、ファイルの作成時に内容を追加できます。
        
    タスク: セキュリティ記述子を管理する
        
        -------------------------- 例 1 --------------------------
        
        次のコマンドは、System.Security.AccessControl.FileSecurity オブジェクト
        を返します。
        
        get-acl -path test.txt | format-list -property *
        
        
        このオブジェクトの詳細については、パイプを使用してコマンドを Get-Member 
        コマンドレットに渡してください。または、MSDN (Microsoft Developer Networ
        k) ライブラリで「FileSecurity クラス」(http://go.microsoft.com/fwlink/?L
        inkId=145718) を参照してください。
        -------------------------- 例 2 --------------------------
        
        次のコマンドは、System.Security.AccessControl.DirectorySecurity オブジェ
        クトを返します。
        
        get-acl -path test_directory | format-list -property *
        
        このオブジェクトの詳細については、パイプを使用してコマンドを Get-Member 
        コマンドレットに渡してください。または、MSDN (Microsoft Developer Networ
        k) ライブラリで「DirectorySecurity クラス」(http://go.microsoft.com/fwli
        nk/?LinkId=145736) を参照してください。
        
    タスク: ファイルとディレクトリを作成する
        
        -------------------------- 例 1 --------------------------
        
        次のコマンドは、C ドライブに Logfiles ディレクトリを作成します。
        
        new-item -path c:\ -name logfiles -type directory
        
        -------------------------- 例 2 --------------------------
        
        次のコマンドは、C:\Logfiles ディレクトリに Log2.txt ファイルを作成し、フ
        ァイルに "test log" という文字列を追加します。
        
        new-item -path c:\logfiles -name log.txt -type file
        
        -------------------------- 例 3 --------------------------
        
        C:\logfiles ディレクトリに Log2.txt というファイルを作成し、そのファイル
        に "test log" という文字列を追加します。
        
        new-item -path c:\logfiles -name log2.txt -type file -value "test log"
        
    タスク: ファイル名とディレクトリ名を変更する
        
        -------------------------- 例 1 --------------------------
        
        次のコマンドは、C:\A ディレクトリにある A.txt ファイルの名前を B.txt に
        変更します。
        
        rename-item -path c:\a\a.txt -newname b.txt
        
        -------------------------- 例 2 --------------------------
        
        次のコマンドは、C:\A\Cc ディレクトリの名前を C:\A\Dd に変更します。
        
        rename-item -path c:\a\cc -newname dd
        
    タスク: ファイルとディレクトリを削除する
        
        -------------------------- 例 1 --------------------------
        
        次のコマンドは、現在のディレクトリにある Test.txt ファイルを削除します。
        
        remove-item -path test.txt
        
        -------------------------- 例 2 --------------------------
        
        このコマンドは、現在のディレクトリにある .xml ファイル名拡張子を持つすべ
        てのファイルを削除します。
        
        remove-item -path *.xml
        
    タスク: 関連付けられたファイルの呼び出しによってプログラムを起動する
    
        -------------------------- 例 1 --------------------------
        
        最初のコマンドは、Get-Service コマンドレットを使用してローカル サービス
        に関する情報を取得します。
        
        このコマンドは、パイプを使用して情報を Export-Csv コマンドレットに渡し、
        情報を Services.csv フィルに保存します。
        
        2 番目のコマンドは、Invoke-Item を使用して、.csv 拡張子に関連付けられた
        プログラムで Services.csv ファイルを開きます。
        
        get-service | export-csv -path services.csv
        
        invoke-item -path services.csv
        
動的パラメーター
    -Encoding 
        
            Unknown
                エンコードの種類が不明または無効です。データはバイナリとして処理
                できます。
                
            String
                文字列用のエンコードの種類を使用します。
                
            Unicode
                リトル エンディアン バイト オーダーによる UTF-16 形式でエンコー
                ドします。
                
            Byte
                一連の文字をバイトのシーケンスにエンコードします。
                
            BigEndianUnicode
                ビッグ エンディアン バイト オーダーによる UTF-16 形式でエンコー
                ドします。
                
            UTF8
                UTF-8 形式でエンコードします。
                
            UTF7
                UTF-7 形式でエンコードします。
                
            ASCII
                ASCII (7 ビット) 文字セット用のエンコードを使用します。
                
        
        サポートされるコマンドレット: Add-Content, Get-Content, Set-Content
        
    -Delimiter 
        ファイルを読み取るときに使用する区切り文字を指定します。既定値は "\n" (行
        末) です。
        
        サポートされるコマンドレット: Get-Content
        
    -Wait 
        ファイルの内容が追加されるときまで待機します。内容が追加されると、追加さ
        れた内容を返します。内容が変更された場合には、ファイル全体を返します。
        
        待機中は、Ctrl + C キーを押すなどのユーザー操作によって中断されるまで、
        毎秒 1 回、Get-Content によってファイルがチェックされます。
        
        サポートされるコマンドレット: Get-Content

メモ

関連するリンク
    about_Providers 
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Provider、FileSystem
ご利用数: 1858209
感想・要望・問い合わせは こちら