about_FileSystem_Provider
プロバイダー名
FileSystem
ドライブ
C:
、 D:
. Temp:
..
機能
Filter、 ShouldProcess
簡単な説明
ファイルとディレクトリへのアクセスを提供します。
詳しい説明
PowerShell FileSystem プロバイダーを使用すると、PowerShell でファイルとディレクトリを取得、追加、変更、クリア、および削除できます。
FileSystem ドライブは、コンピューター上のディレクトリとファイルを含む階層型名前空間です。 FileSystem ドライブには、論理ドライブ、物理ドライブ、ディレクトリ、またはマップされたネットワーク共有を指定できます。
PowerShell バージョン 7.0 以降では、呼び出 TEMP:
されたドライブがユーザーの一時ディレクトリ パスにマップされます。 PowerShell では、.NET GetTempPath() メソッドを使用して、一時フォルダーの場所を決定します。 Windows では、場所は $env:TEMP
. Windows 以外のシステムでは、場所は環境変数が定義されていない場合と/tmp
同じです$env:TMPDIR
。
FileSystem プロバイダーは、この記事で説明する次のコマンドレットをサポートしています。
- Get-Location
- Set-Location
- Get-Item
- Get-ChildItem
- Invoke-Item
- Move-Item
- New-Item
- Remove-Item
- Get-ItemProperty
- Set-ItemProperty
- Clear-Item
- Clear-ItemProperty
- Remove-Item
- Remove-ItemProperty
- Get-Acl
- Set-Acl
- Get-AuthenticodeSignature
- Set-AuthenticodeSignature
- Add-Content
- Clear-Content
- Get-Content
- Set-Content
このプロバイダーによって公開される型
ファイルは System.IO.FileInfo クラスのインスタンスです。 ディレクトリは、System.IO.DirectoryInfo クラスのインスタンスです。
PowerShell 拡張型システムでは、これらのオブジェクト型に追加のプロパティが追加され、追加情報が提供されます。 一部の情報はプラットフォーム固有です。 たとえば、LinkType プロパティの使用可能な値は、使用されているプラットフォームとファイルシステムによって異なります。 Linux および macOS ファイルシステムのサポート HardLink
と SymLink
. Windows NTFS では、HardLink
SymLink
LinkType の他のいくつかの値がJunction
サポートされています。
リンクされたアイテムに関する情報を使用 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
---- ------------- ------ ----
la--- 6/8/2023 12:20 PM 0 winget.exe ->
FileSystem ドライブの移動
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:
関連項目
PowerShell