about_FileSystem_Provider

プロバイダー名

FileSystem (ファイル システム)

ドライブ

C:, D:, Temp: ...

機能

フィルター****処理

簡単な説明

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

詳しい説明

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

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

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

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

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

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

FileSystem プロバイダーは、コンピューター上のすべての論理ドライブを PowerShell ドライブとしてマップすることによって、そのデータストアを公開します。 ファイルシステム ドライブを操作するには、ドライブ名の後にコロン ( : ) を使用して、場所をドライブに変更します。

Set-Location C:

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

注意

PowerShell では、エイリアスを使用して、プロバイダーパスを操作するための使い慣れた方法を使用できます。 や ls など dir のコマンドは、 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 パラメーターを使用して、作成時にファイルにコンテンツを追加できます。

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

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

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

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

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

コマンドレットの詳細 Get-Content については、「」を参照してください。

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

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

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

ファイルの ACL を表示する

このコマンドは、 accesscontrol-namespace. system.security.accesscontrol.filesecurity オブジェクトを返します。

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

このオブジェクトの詳細については、コマンドを Get Member コマンドレットにパイプ処理してください。 または、「 System.security.accesscontrol.filesecurity クラス」を参照してください。

ファイルの ACL を変更する

ファイルの ACL を作成および設定する

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

ディレクトリを作成する

このコマンドにより、ドライブに C ディレクトリが作成され logfiles ます。

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

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

ファイルを作成する

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

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

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

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

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

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

ファイルの名前の変更

このコマンドにより、 C:\a ディレクトリ内のファイルの名前が次のように b.txt 変更され a.txt ます。

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

ディレクトリ名の変更

このコマンドにより、ディレクトリの名前が次のように C:\a\dd 変更され C:\a\cc ます。

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

削除 (ファイルとディレクトリを)

ファイルを削除する

このコマンドを実行すると、現在のディレクトリ内のファイルが削除され Test.txt ます。

Remove-Item -Path test.txt

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

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

Remove-Item -Path *.xml

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

ファイルを呼び出す

最初のコマンドは、 Get Service コマンドレットを使用して、ローカルサービスに関する情報を取得します。

情報を エクスポート Csv コマンドレットにパイプし、その情報をファイルに Services.csv 格納します。

2番目のコマンドは、呼び出し項目を使用して、拡張機能に .csv 関連付けられているプログラムでファイルを開き services.csv ます。

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

指定された属性を持つファイルとフォルダーを取得する

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

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

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

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

Get-ChildItem -File -System -Recurse

隠しファイルの取得

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

Attributes パラメーターには、非表示ファイルを取得すると、他のすべてのファイルを取得すると !Directory いう2つの値 !Directory+Hidden があります。

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

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

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

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

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

Get-ChildItem -Attributes Compressed,Encrypted

動的パラメーター

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

Encoding <Microsoft.PowerShell.Commands.FileSystemCmdletProviderEncoding>

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

  • Ascii: ascii (7 ビット) 文字セットのエンコーディングを使用します。
  • BigEndianUnicode: ビッグエンディアンのバイト順を使用して utf-16 形式でエンコードします。
  • String: 文字列のエンコーディングの種類を使用します。
  • Unicode: リトルエンディアンのバイト順を使用して utf-16 形式でエンコードします。
  • UTF7: utf-7 形式でエンコードします。
  • UTF8: utf-8 形式でエンコードします。
  • UTF8BOM: バイト順マーク (BOM) を使用して utf-8 形式でエンコードします。
  • UF8NOBOM: バイト順マーク (BOM) を使用せずに utf-8 形式でエンコードします。
  • UTF32:32 utf-8 形式でエンコードします。
  • 既定 値は、インストールされている既定のコードページでエンコードされます。
  • OEM: MS-DOS およびコンソールプログラムの既定のエンコードを使用します。
  • 不明: エンコードの種類が不明または無効です。 データはバイナリとして処理できます。

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

Delimiter <System.String>

Get-Content で使用され、読み込み中にファイルをオブジェクトに分割する区切り文字を指定します。

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

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

ファイルに存在しない区切り文字を入力すると、 Get Content は、ファイル全体を単一の区切られていないオブジェクトとして返します。

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

注意

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

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

Wait <System.Management.Automation.SwitchParameter>

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

待機中に、Get-Content は 1 秒おきにファイルをチェックします。これは CTRL+C を押すなどして中断するまで続きます。

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

Attributes <FlagsExpression>

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

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

パラメーターで -Attributes は、次の属性がサポートされています。

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

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

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

  • ! -NOT
  • + -および
  • , または

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

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

Directory <System.Management.Automation.SwitchParameter>

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

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

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

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

File <System.Management.Automation.SwitchParameter>

ファイルを取得します。

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

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

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

Hidden <System.Management.Automation.SwitchParameter>

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

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

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

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

ReadOnly <System.Management.Automation.SwitchParameter>

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

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

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

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

System <System.Management.Automation.SwitchParameter>

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

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

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

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

NewerThan <System.DateTime>

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

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

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

OlderThan <System.DateTime>

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

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

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

Stream <System.String>

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

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

Raw <SwitchParameter>

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

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

Itemtype <String>

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

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

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

  • ファイル
  • ディレクトリ
  • SymbolicLink
  • ジャンクション
  • ハードリンク

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

パイプラインの使用

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

ヘルプの表示

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

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

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

関連項目