次の方法で共有


about_FileSystem_Provider

プロバイダー名

FileSystem

ドライブ

C:D:Temp: ...

機能

FilterShouldProcess

簡単な説明

ファイルとディレクトリへのアクセスを提供します。

詳しい説明

PowerShell FileSystem プロバイダーを使用すると、PowerShell でファイルとディレクトリを取得、追加、変更、クリア、および削除できます。

FileSystem ドライブは、コンピューター上のディレクトリとファイルを含む階層型名前空間です。 FileSystem ドライブには、論理ドライブ、物理ドライブ、ディレクトリ、またはマップされたネットワーク共有を指定できます。

FileSystem プロバイダーは、この記事で説明する次のコマンドレットをサポートしています。

このプロバイダーによって公開される型

ファイルは、 System.IO.FileInfo クラスのインスタンスです。 ディレクトリは、 System.IO.DirectoryInfo クラスのインスタンスです。

PowerShell 拡張型システムでは、これらのオブジェクト型に追加のプロパティが追加され、追加情報が提供されます。 一部の情報はプラットフォーム固有です。 たとえば、 LinkType プロパティの値は、使用されているプラットフォームとファイルシステムによって異なります。 Linux および macOS ファイルシステムでは、 HardLinkSymLinkがサポートされます。 Windows NTFS では、 HardLinkSymLinkJunction、および他のいくつかの値 LinkTypeがサポートされています。

リンクアイテムに関する情報に Get-Item または Get-ChildItem を使用する場合、 Mode プロパティには、アイテムがリンクであることを示す l が含まれます。 LinkType プロパティには、リンクの種類が含まれています。

AppExecLink リンクは、Microsoft Store からアプリケーションをインストールするときに作成されます。 AppExecLink リンクの場合、Windows は LinkType プロパティまたは LinkTarget プロパティの値を提供しません。

Get-Item ~\AppData\Local\Microsoft\WindowsApps\winget.exe

    Directory: C:\Users\user1\AppData\Local\Microsoft\WindowsApps

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---l          6/8/2023  12:20 PM              0 winget.exe

FileSystem プロバイダーは、コンピューター上の論理ドライブを PowerShell ドライブとしてマッピングすることで、データ ストアを公開します。 FileSystem ドライブを操作するには、ドライブ名の後にコロン (:) を付けて、場所をドライブに変更します。

Set-Location C:

他の PowerShell ドライブから FileSystem プロバイダーを操作することもできます。 別の場所からファイルまたはディレクトリを参照するには、パスのドライブ名 (C:D:、...) を使用します。

Note

PowerShell ではエイリアスを使用して、プロバイダー パスを使い慣れた方法で操作できます。 dirlsなどのコマンドがGet-ChildItemのエイリアスになりました。cdSet-Locationのエイリアスです。 pwdGet-Locationのエイリアスです。

ファイルとディレクトリの取得

Get-ChildItem コマンドレットは、現在の場所にあるすべてのファイルとディレクトリを返します。 検索する別のパスを指定し、組み込みのパラメーターを使用して再帰の深さをフィルター処理および制御できます。

Get-ChildItem

コマンドレットの使用方法の詳細については、「 Get-ChildItemを参照してください。

ファイルとディレクトリのコピー

Copy-Item コマンドレットは、指定した場所にファイルとディレクトリをコピーします。 パラメーターは、 Get-ChildItemと同様に、フィルター処理と再帰に使用できます。

次のコマンドは、 C:\temp\ パスの下にあるすべてのファイルとディレクトリをフォルダー C:\Windows\Tempにコピーします。

Copy-Item -Path C:\temp\* -Destination C:\Windows\Temp -Recurse -File

Copy-Item は、確認を求めずに、コピー先ディレクトリ内のファイルを上書きします。

このコマンドは、 a.txt ファイルを C:\a ディレクトリから C:\a\bb ディレクトリにコピーします。

Copy-Item -Path C:\a\a.txt -Destination C:\a\bb\a.txt

C:\a ディレクトリ内のすべてのディレクトリとファイルをC:\c ディレクトリにコピーします。 コピーするディレクトリのいずれかがコピー先ディレクトリに既に存在する場合、 Force パラメーターを指定しない限り、コマンドは失敗します。

Copy-Item -Path C:\a\* -Destination C:\c -Recurse

詳細については、「 Copy-Item」を参照してください。

ファイルとディレクトリの移動

このコマンドは、C:\a ディレクトリ内のc.txt ファイルを C:\a\aa ディレクトリに移動します。

Move-Item -Path C:\a\c.txt -Destination C:\a\aa

既定では、コマンドレットは同じ名前の既存のファイルを上書きしません。 コマンドレットで既存のファイルを強制的に上書きするには、 Force パラメーターを指定します。

ディレクトリが現在の場所である場合、ディレクトリを移動することはできません。 Move-Itemを使用して現在の場所にディレクトリを移動すると、このエラーが表示されます。

C:\temp> Move-Item -Path C:\temp\ -Destination C:\Windows\Temp

Move-Item : Cannot move item because the item at 'C:\temp\' is in use.
At line:1 char:1
+ Move-Item C:\temp\ C:\temp2\
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Move-Item], PSInvalidOperationException
    + FullyQualifiedErrorId : InvalidOperation,Microsoft.PowerShell.Commands.MoveItemCommand

ファイル コンテンツの管理

ファイルの内容を取得する

このコマンドは、"Test.txt" ファイルの内容を取得し、コンソールに表示します。

Get-Content -Path Test.txt

ファイルのコンテンツを別のコマンドレットにパイプで送ることができます。 たとえば、次のコマンドは、 Test.txt ファイルの内容を読み取り、 ConvertTo-Html コマンドレットへの入力として提供します。

Get-Content -Path Test.txt | ConvertTo-Html

また、プロバイダー パスの前にドル記号 ($) を付けることで、ファイルの内容を取得することもできます。 パスは、変数の名前付け制限のために中かっこで囲む必要があります。 詳細については、「 about_Variables」を参照してください。

${C:\Windows\System32\Drivers\etc\hosts}

ファイルにコンテンツを追加する

このコマンドは、 Test.txt ファイルに "test content" 文字列を追加します。

Add-Content -Path test.txt -Value "test content"

Test.txt ファイル内の既存のコンテンツは削除されません。

ファイルの内容を置き換える

このコマンドは、 Test.txt ファイルの内容を "test content" 文字列に置き換えます。

Set-Content -Path test.txt -Value "test content"

Test.txtの内容が上書きされます。 New-Item コマンドレットの Value パラメーターを使用して、作成時にファイルにコンテンツを追加できます。

ファイルの内容をループ処理する

既定では、 Get-Content コマンドレットは行末文字を区切り記号として使用するため、ファイルは文字列のコレクションとして取得され、各行はファイル内の 1 つの文字列として取得されます。

Delimiter パラメーターを使用して、代替区切り記号を指定できます。 区切り文字をセクションの終わりか次のセクションの始まりを示す文字に設定した場合、ファイルを論理部分に分割できます。

最初のコマンドは、 Employees.txt ファイルを取得し、セクションに分割します。各セクションは "End of Employee Record" という単語で終わり、 $e 変数に保存されます。

2 番目のコマンドでは、配列表記を使用して、 $e内のコレクション内の最初の項目を取得します。 PowerShell 配列は 0 から始まるため、インデックス 0 が使用されます。

Get-Contentコマンドレットの詳細については、Get-Contentのヘルプ トピックを参照してください。

配列の詳細については、「 about_Arrays」を参照してください。

$e = Get-Content c:\test\employees.txt -Delimited "End Of Employee Record"
$e[0]

セキュリティ記述子の管理

ファイルの ACL を表示する

このコマンドは、 System.Security.AccessControl.FileSecurity オブジェクトを返します。

Get-Acl -Path test.txt | Format-List -Property *

このオブジェクトの詳細については、コマンドを Get-Member コマンドレットにパイプするか、 FileSecurity クラスを参照してください。

ファイルとディレクトリの作成

ディレクトリを作成する

このコマンドは、C ドライブに logfiles ディレクトリを作成します。

New-Item -Path c:\ -Name logfiles -Type directory

PowerShell には、New-Item コマンドレットを使用して新しいディレクトリを作成するmkdir関数 (エイリアス md) も含まれています。

ファイルを作成する

このコマンドは、C:\logfiles ディレクトリにlog2.txt ファイルを作成し、"test log" 文字列をファイルに追加します。

New-Item -Path c:\logfiles -Name log2.txt -Type file

コンテンツを持つファイルを作成する

C:\logfiles ディレクトリに log2.txt という名前のファイルを作成し、文字列 "test log" をファイルに追加します。

New-Item -Path c:\logfiles -Name log2.txt -Type file -Value "test log"

ファイルとディレクトリの名前変更

ファイル名を変更する

このコマンドは、C:\a ディレクトリ内のa.txt ファイルの名前をb.txtに変更します。

Rename-Item -Path c:\a\a.txt -NewName b.txt

ディレクトリの名前を変更する

このコマンドは、 C:\a\cc ディレクトリの名前を C:\a\ddに変更します。

Rename-Item -Path c:\a\cc -NewName dd

ファイルとディレクトリの削除

ファイルを削除する

このコマンドは、現在のディレクトリ内の Test.txt ファイルを削除します。

Remove-Item -Path test.txt

ワイルドカードを使用してファイルを削除する

このコマンドは、 .xml ファイル名拡張子を持つ現在のディレクトリ内のすべてのファイルを削除します。

Remove-Item -Path *.xml

関連付けられたファイルを呼び出してプログラムを開始する

ファイルを呼び出す

Get-Service コマンドレットを使用してローカル サービスに関する情報を取得し、Export-Csv コマンドレットに情報をパイプしてServices.csv ファイルに情報を格納します。

次にInvoke-Item.csv拡張子に関連付けられたプログラムでservices.csvファイルを開きます。

Get-Service | Export-Csv -Path services.csv
Invoke-Item -Path services.csv

指定した属性を持つファイルとフォルダーの取得

システム ファイルを取得する

このコマンドを実行すると、現在のディレクトリとそのサブディレクトリにあるシステム ファイルが取得されます。

File パラメーターを使用してファイル (ディレクトリではなく) のみを取得し、System パラメーターを使用して "system" 属性を持つ項目のみを取得します。

Recurse パラメーターを使用して、現在のディレクトリとすべてのサブディレクトリ内の項目を取得します。

Get-ChildItem -File -System -Recurse

隠しファイルを取得する

このコマンドは、非表示ファイルを含む、現在のディレクトリにあるすべてのファイルを取得します。

Attributes パラメーターと、非表示のファイルを取得する !Directory+Hidden と、他のすべてのファイルを取得する !Directory の 2 つの値を使用します。

Get-ChildItem -Attributes !Directory,!Directory+Hidden

dir -att !d,!d+h は、このコマンドに相当します。

圧縮されたファイルと暗号化されたファイルを取得する

このコマンドを実行すると、現在のディレクトリにあり、圧縮または暗号化されているファイルが取得されます。

CompressedEncryptedの 2 つの値で Attributes パラメーターを使用します。 値は、"OR" 演算子を表すコンマ , で区切られます。

Get-ChildItem -Attributes Compressed,Encrypted

動的パラメーター

動的パラメーターは、PowerShell プロバイダーによって追加されるコマンドレット パラメーターであり、プロバイダー対応ドライブでコマンドレットが使用されている場合にのみ使用できます。

Encoding <FileSystemCmdletProviderEncoding>

ファイル エンコードを指定します。 既定値は ASCII です。

  • Ascii ASCII (7 ビット) 文字セットを使用します。
  • BigEndianUnicode ビッグ エンディアンバイト順で UTF-16 を使用します。
  • BigEndianUTF32 ビッグ エンディアンバイト順で UTF-32 を使用します。
  • Byte 文字のセットをバイト シーケンスにエンコードします。
  • Default システムのアクティブなコード ページ (通常は ANSI) に対応するエンコードを使用します。
  • Oem システムの現在の OEM コード ページに対応するエンコードを使用します。
  • StringUnicode と同じです。
  • Unicode リトル エンディアン バイト順で UTF-16 を使用します。
  • UnknownUnicode と同じです。
  • UTF7 UTF-7 を使用します。
  • UTF8 UTF-8 を使用します。
  • UTF32 リトル エンディアンバイト順で UTF-32 を使用します。

サポートされているコマンドレット

  • Add-Content
  • Get-Content
  • Set-Content

Delimiter <String>

ファイルを読み取り中にオブジェクトに分割するために使用 Get-Content 区切り記号を指定します。

既定値は \n で、行末文字です。

テキスト ファイルを読み取るとき、 Get-Content は文字列オブジェクトのコレクションを返します。各オブジェクトは区切り文字で終わります。

ファイルに存在しない区切り記号を入力 Get-Content 、ファイル全体が 1 つの区切り記号なしのオブジェクトとして返されます。

このパラメーターを使用し、大きなファイルを小さなファイルに分割します。「End of Example」のようなファイル区切り記号を区切り文字として指定します。 区切り記号は保持され (破棄されません)、各ファイル セクションの最後の項目になります。

Note

現在、 Delimiter パラメーターの値が空の文字列の場合、 Get-Content は何も返しません。 これは既知の問題です。 Get-Contentファイル全体を単一の非制限文字列として返すようにするには、ファイルに存在しない値を入力します。

サポートされているコマンドレット

  • Get-Content

Wait <SwitchParameter>

コンテンツがファイルに追加されるのを待ちます。 コンテンツが追加される場合、追加されたコンテンツを返します。 コンテンツが変更された場合、ファイル全体が返されます。

待機中 Get-Content 、Ctrl キーを押しながら C キーを押すなどして、中断するまでファイルを 1 秒ごとに 1 回チェックします。

サポートされているコマンドレット

  • Get-Content

Attributes <FlagsExpression>

指定した属性のファイルとフォルダーを取得します。 このパラメーターはすべての属性をサポートします。複雑な属性の組み合わせを指定できます。

Attributes パラメーターは、Windows PowerShell 3.0 で導入されました。

Attributes パラメーターは、次の属性をサポートしています。

  • アーカイブ
  • Compressed
  • Device
  • ディレクトリ
  • Encrypted
  • 非表示
  • Normal
  • NotContentIndexed
  • オフライン
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • システム
  • 一時

これらの属性の詳細については、 FileAttributes 列挙型を参照してください。

次の演算子を利用して属性を結合します。

  • ! -じゃない
  • + -そして
  • , -又は

演算子とその属性の間にはスペースを挿入できません。 ただし、コンマの前にはスペースを挿入できます。

サポートされているコマンドレット

  • Get-ChildItem

ディレクトリ <SwitchParameter>

ディレクトリ (フォルダー) を取得します。

Directory パラメーターは、Windows PowerShell 3.0 で導入されました。

ディレクトリのみを取得するには、 Directory パラメーターを使用し、 File パラメーターを省略します。 ディレクトリを除外するには、 File パラメーターを使用し、 Directory パラメーターを省略するか、 Attributes パラメーターを使用します。

サポートされているコマンドレット

  • Get-ChildItem

File <SwitchParameter>

ファイルを取得します。

File パラメーターは、Windows PowerShell 3.0 で導入されました。

ファイルのみを取得するには、 File パラメーターを使用し、 Directory パラメーターを省略します。 ファイルを除外するには、 Directory パラメーターを使用し、 File パラメーターを省略するか、 Attributes パラメーターを使用します。

サポートされているコマンドレット

  • Get-ChildItem

Hidden <SwitchParameter>

非表示のファイルとディレクトリ (フォルダー) のみを取得します。 既定では、 Get-ChildItem は非表示以外の項目のみを取得します。

Hidden パラメーターは、Windows PowerShell 3.0 で導入されました。

非表示の項目のみを取得するには、Hidden パラメーター、そのhまたはahエイリアス、または Attributes パラメーターの Hidden 値を使用します。 非表示の項目を除外するには、 Hidden パラメーターを省略するか、 Attributes パラメーターを使用します。

サポートされているコマンドレット

  • Get-ChildItem

ReadOnly <SwitchParameter>

読み取り専用のファイルとディレクトリ (フォルダー) を取得します。

ReadOnly パラメーターは、Windows PowerShell 3.0 で導入されました。

読み取り専用アイテムのみを取得するには、ReadOnly パラメーター、そのarエイリアス、または Attributes パラメーターの ReadOnly 値を使用します。 読み取り専用項目を除外するには、 Attributes パラメーターを使用します。

サポートされているコマンドレット

  • Get-ChildItem

System <SwitchParameter>

システム ファイルとディレクトリ (フォルダー) のみを取得します。

System パラメーターは、Windows PowerShell 3.0 で導入されました。

システム ファイルとフォルダーのみを取得するには、System パラメーター、そのasエイリアス、または Attributes パラメーターの System 値を使用します。 システム ファイルとフォルダーを除外するには、 Attributes パラメーターを使用します。

サポートされているコマンドレット

  • Get-ChildItem

NewerThan <DateTime>

ファイルのLastWriteTime値が指定した日付より大きい場合に$Trueを返します。 それ以外の場合は $Falseを返します。

Get-Date コマンドレットから返されるDateTime オブジェクト、または"August 10, 2011 2:00 PM"などのDateTime オブジェクトに変換できる文字列を入力します。

サポートされているコマンドレット

OlderThan <DateTime>

ファイルのLastWriteTime値が指定した日付より小さい場合に$Trueを返します。 それ以外の場合は $Falseを返します。

DateTime オブジェクト (Get-Date コマンドレットから返されるオブジェクトなど) や、DateTime オブジェクトに変換できる文字列 ("August 10, 2011 2:00 PM"など) を入力します。

サポートされているコマンドレット

  • Test-Path

Stream <String>

代替データ ストリームを管理します。 ストリーム名を入力します。 ワイルドカードは、ファイル システム ドライブの Get-Item コマンドと Remove-Item コマンドでのみ使用できます。

サポートされているコマンドレット

  • Add-Content
  • Clear-Content
  • Get-Item
  • Get-Content
  • Remove-Item
  • Set-Content

Raw <SwitchParameter>

改行文字が無視されます。 コンテンツを 1 つの項目として返します。

サポートされているコマンドレット

  • Get-Content

ItemType <String>

このパラメーターを使用すると、 New-Itemで作成する項目の種類を指定できます。

このパラメーターで使用できる値は、使用している現在のプロバイダーによって異なります。

FileSystem ドライブでは、次の値を使用できます。

  • ファイル
  • ディレクトリ
  • SymbolicLink
  • Junction
  • HardLink

サポートされているコマンドレット

  • New-Item

パイプラインの使用

プロバイダー コマンドレットは、パイプライン入力を受け入れます。 パイプラインを使用すると、あるコマンドレットから別のプロバイダー コマンドレットにプロバイダー データを送信することで、タスクを簡略化できます。 プロバイダー コマンドレットでパイプラインを使用する方法の詳細については、この記事全体で提供されているコマンドレットリファレンスを参照してください。

ヘルプの表示

Windows PowerShell 3.0 より、プロバイダー コマンドレットのためにカスタマイズされたヘルプ トピックを取得できます。これはファイル システム ドライブでのプロバイダー コマンドレットの動作を説明します。

ファイル システム ドライブ用にカスタマイズされたヘルプ トピックを取得するには、ファイル システム ドライブで Get-Help コマンドを実行するか、Get-HelpPath パラメーターを使用してファイル システム ドライブを指定します。

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c:

関連項目