about_FileSystem_Provider

プロバイダー名

FileSystem

ドライブ

C:D:. Temp: ..

機能

FilterShouldProcess

簡単な説明

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

詳しい説明

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

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

PowerShell バージョン 7.0 以降では、呼び出 TEMP: されたドライブがユーザーの一時ディレクトリ パスにマップされます。 PowerShell では、.NET GetTempPath() メソッドを使用して、一時フォルダーの場所を決定します。 Windows では、場所は $env:TEMP. Windows 以外のシステムでは、場所は環境変数が定義されていない場合と/tmp同じです$env:TMPDIR

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

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

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

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

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

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
----                 -------------         ------ ----
la---            6/8/2023 12:20 PM              0 winget.exe ->

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

Set-Location C:

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

Note

PowerShell ではエイリアスを使用して、プロバイダー パスを使い慣れた方法で操作できます。 などの dir コマンドと ls 、現在はエイリアス Get-ChildItemになっているコマンドは、 cd 次のエイリアス Set-Locationです。 の pwd エイリアス Get-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

詳細については、「アイテムのコピー」を参照してください

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

このコマンドは、 c.txt ディレクトリ内のファイルを C:\a ディレクトリに 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 content" 文字列をファイルに Test.txt 追加します。

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

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

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

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

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

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

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

既定では、 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 クラスを参照してください。

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

ディレクトリを作成する

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

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

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

ファイルを作成する

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

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

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

ディレクトリで呼び出された log2.txt ファイルを C:\logfiles 作成し、文字列 "test log" をファイルに追加します。

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

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

ファイル名を変更する

このコマンドは、ディレクトリ内のファイルの a.txt 名前を次の C:\a 名前に 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

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

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

Remove-Item -Path *.xml

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

ファイルを呼び出す

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

次に、 Invoke-Item によって、拡張子に services.csv 関連付けられているプログラム内のファイルが .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非表示のファイルを取得する 2 つの値と、!Directory他のすべてのファイルを取得する値を使用します。

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

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

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

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

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

Get-ChildItem -Attributes Compressed,Encrypted

動的パラメーター

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

エンコード エンコード<>

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

  • ascii: ASCII (7 ビット) 文字セットのエンコードを使用します。
  • bigendianunicode: ビッグ エンディアンバイト順を使用して UTF-16 形式でエンコードします。
  • bigendianutf32: ビッグ エンディアンバイト順を使用して UTF-32 形式でエンコードします。
  • oem: MS-DOS およびコンソール プログラムの既定のエンコードを使用します。
  • unicode: リトル エンディアンバイト順を使用して UTF-16 形式でエンコードします。
  • utf7: UTF-7 形式でエンコードします。
  • utf8: UTF-8 形式でエンコードします。
  • utf8BOM: バイト オーダー マーク (BOM) を使用して UTF-8 形式でエンコードします。
  • utf8NoBOM: バイト オーダー マーク (BOM) を使用せずに UTF-8 形式でエンコードします。
  • utf32: UTF-32 形式でエンコードします。

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

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

区切り記号 <文字列>

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

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

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

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

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

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>

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

ディレクトリ パラメーターは、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

非表示 <の SwitchParameter>

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

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

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

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

  • Get-ChildItem

ReadOnly <SwitchParameter>

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

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

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

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

  • Get-ChildItem

システム <スイッチパラメーター>

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

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

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

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

  • Get-ChildItem

NewerThan <DateTime>

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

Get-Date コマンドレットから返される DateTime オブジェクトや、DateTime オブジェクトに変換できる文字列 (例"August 10, 2011 2:00 PM": .

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

OlderThan <DateTime>

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

コマンドレットから返される Get-Date DateTime オブジェクトや、DateTime オブジェクトに変換できる文字列 (例"August 10, 2011 2:00 PM": .

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

  • Test-Path

ストリーム <文字列>

代替データ ストリームを管理します。 ストリーム名を入力します。 ワイルドカードは、ファイル システム ドライブ内のGet-Itemコマンドに対Remove-Itemしてのみ許可されます。

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

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

Raw <SwitchParameter>

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

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

  • Get-Content

ItemType <文字列>

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

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

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

  • ファイル
  • ディレクトリ
  • SymbolicLink
  • Junction
  • ハードリンク

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

  • New-Item

パイプラインの使用

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

ヘルプの​​表示

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

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

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

関連項目