about_FileSystem_Provider
プロバイダー名
FileSystem
ドライブ
C:
、 D:
、 Temp:
...
機能
Filter、 ShouldProcess
簡単な説明
ファイルとディレクトリへのアクセスを提供します。
詳しい説明
PowerShell FileSystem プロバイダーを使用すると、PowerShell でファイルとディレクトリを取得、追加、変更、クリア、および削除できます。
FileSystem ドライブは、コンピューター上のディレクトリとファイルを含む階層型名前空間です。 FileSystem ドライブには、論理ドライブ、物理ドライブ、ディレクトリ、またはマップされたネットワーク共有を指定できます。
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
、 Junction
、および他のいくつかの値 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 ドライブの移動
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
詳細については、「 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
は、このコマンドに相当します。
圧縮されたファイルと暗号化されたファイルを取得する
このコマンドを実行すると、現在のディレクトリにあり、圧縮または暗号化されているファイルが取得されます。
Compressed
とEncrypted
の 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 コード ページに対応するエンコードを使用します。String
Unicode
と同じです。Unicode
リトル エンディアン バイト順で UTF-16 を使用します。Unknown
Unicode
と同じです。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-Help
の Path パラメーターを使用してファイル システム ドライブを指定します。
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path c:
関連項目
PowerShell