FileSystem Provider
プロバイダー名
FileSystem
ドライブ
C, D
簡易説明
ファイルおよびディレクトリへのアクセスを提供します。
詳細説明
Windows PowerShell ファイルシステム プロバイダーを使用すると、Windows PowerShell でファイルやディレクトリを取得、追加、変更、クリア、および削除できます。
ファイルシステム プロバイダーでは、ネットワーク共有に割り当てられたドライブを含め、コンピューターに構成されている論理ドライブに対応する Windows PowerShell ドライブを公開します。たとえば、フロッピー ディスク ドライブを 1 台、ハード ディスク ドライブを 1 台、そしてネットワーク共有ディレクトリを 1 つ割り当てられたコンピューターでは、A、C、および Z というドライブを持っているとします。FileSystem プロバイダーは、A、C、および Z に直接対応する Windows PowerShell ドライブを公開するため、Windows PowerShell 内からこれらのドライブを参照できます。たとえば、次の例で示しているように、C ドライブを参照するには C: を使用します。
このコマンドは、ファイルやディレクトリを含め、C ドライブのすべての内容を返します。FileSystem プロバイダー経由で特定のディレクトリまたはファイルを参照する場合は、そのディレクトリまたはファイルを特定できるよう必要な情報を提供する必要があります。したがって、場合によっては完全修飾名を提供する必要があります。完全修飾名には、ドライブ名 (コロン付き)、ディレクトリ名とサブディレクトリ名、およびファイル名 (該当する場合) が含まれます。たとえば、次の例で示しているのは、C ドライブの Windows ディレクトリの System32 サブディレクトリにある Shell.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\system32 ディレクトリにある .dll ファイルの一覧を表示する場合は、次のコマンドを使用します。
Get-ChildItem .\system32\*.dll
\system32 の前にあるピリオドは、現在の作業場所を表します。
現在の作業場所がファイルシステム ドライブ以外のドライブになる状況もあり得ます。この場合は、対象ドライブの名前を常に参照に含める必要があります。たとえば、現在の作業場所が env: ドライブだとします。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 に渡されます。このとき、PSIsContainer プロパティがチェックされ、コンテナーではない (!) オブジェクトのみがパイプラインを通過します。
-------------------------- 例 3 --------------------------
次のコマンドは、Get-ChildItem を使用して、現在のディレクトリにあるすべてのファイルとディレクトリを取得します。結果はパイプを使用して Where-Object に渡されます。このとき、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 Network) ライブラリで「FileSecurity クラス」(https://go.microsoft.com/fwlink/?LinkId=145718) を参照してください。
-------------------------- 例 2 --------------------------
次のコマンドは、System.Security.AccessControl.DirectorySecurity オブジェクトを返します。
get-acl -path test_directory | format-list -property *
このオブジェクトの詳細については、パイプを使用してコマンドを Get-Member コマンドレットに渡してください。または、MSDN (Microsoft Developer Network) ライブラリで「DirectorySecurity クラス」(https://go.microsoft.com/fwlink/?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
動的パラメーター
動的パラメーターとは、Windows PowerShell プロバイダーによって追加されるコマンドレット パラメーターであり、プロバイダーに対応したドライブでコマンドレットが使用されている場合のみ利用できます。
Encoding <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>
Value | Description |
---|---|
Unknown |
エンコードの種類が不明または無効です。データはバイナリとして処理できます。 |
String |
文字列用のエンコードの種類を使用します。 |
Unicode |
リトル エンディアン バイト オーダーによる UTF-16 形式でエンコードします。 |
Byte |
一連の文字をバイトのシーケンスにエンコードします。 |
BigEndianUnicode |
ビッグ エンディアン バイト オーダーによる UTF-16 形式でエンコードします。 |
UTF8 |
UTF-8 形式でエンコードします。 |
UTF7 |
UTF-7 形式でエンコードします。 |
ASCII |
ASCII (7 ビット) 文字セット用のエンコードを使用します。 |
サポートされているコマンドレット
Delimiter <System.String>
ファイルを読み取るときに使用する区切り文字を指定します。既定値は "\n" (行末) です。
サポートされているコマンドレット
Wait <System.Management.Automation.SwitchParameter>
ファイルの内容が追加されるときまで待機します。内容が追加されると、追加された内容を返します。内容が変更された場合には、ファイル全体を返します。
待機中は、Ctrl + C キーを押すなどのユーザー操作によって中断されるまで、毎秒 1 回、Get-Content によってファイルがチェックされます。