次の方法で共有


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 ファイルシステムでは、 と SymLinkがサポートHardLinkされています。 Windows NTFS では、HardLinkSymLink、、Junction、および LinkType のその他のいくつかの値がサポートされています。

または を使用Get-Itemしてリンクされたアイテムに関する情報を取得する場合、Mode プロパティには、アイテムがリンクであることを示す が含まれますlGet-ChildItem 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
----                 -------------         ------ ----
la---            6/8/2023 12:20 PM              0 winget.exe ->

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

Set-Location C:

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

注意

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

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

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

このコマンドは、 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 作成し、"テスト ログ" 文字列をファイルに追加します。

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:\ab.txt変更します。

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

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

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

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

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

ファイルを削除する

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

Remove-Item -Path test.txt

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

このコマンドは、ファイル名拡張子を持つ現在のディレクトリ内のすべてのファイルを .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 つの値CompressedEncrypted使用します。 値は、"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」のようなファイル区切り記号を区切り文字として指定します。 区切り文字は予約されています (破棄されません)。各ファイル セクションの最後の項目になります。

注意

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

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

  • Get-Content

Wait <SwitchParameter>

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

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

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

  • Get-Content

Attributes <FlagsExpression>

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

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

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

  • Archive
  • Compressed
  • [デバイス]
  • ディレクトリ
  • Encrypted
  • [非表示]
  • 標準
  • NotContentIndexed
  • オフライン
  • ReadOnly
  • ReparsePoint
  • SparseFile
  • システム
  • 一時

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

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

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

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

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

  • Get-ChildItem

ディレクトリ <SwitchParameter>

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

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

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

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

  • Get-ChildItem

ファイル <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 パラメーターの System 値を使用します。 システム ファイルとフォルダーを除外するには、 Attributes パラメーターを使用します。

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

  • Get-ChildItem

NewerThan <DateTime>

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

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

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

OlderThan <DateTime>

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

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

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

  • Test-Path

<Stream文字列>

代替データ ストリームを管理します。 ストリーム名を入力します。 ワイルドカードは、ファイル システム ドライブ内の 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
  • ジャンクション
  • ハードリンク

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

  • New-Item

パイプラインの使用

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

ヘルプの表示

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

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

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

こちらもご覧ください