Remove-Item
指定した項目を削除します。
構文
Remove-Item
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-Stream <String[]>]
[<CommonParameters>]
Remove-Item
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-UseTransaction]
[-Stream <String[]>]
[<CommonParameters>]
説明
Remove-Item
コマンドレットは、1 つ以上のアイテムを削除します。
多くのプロバイダーでサポートされているため、ファイル、フォルダー、レジストリ キー、変数、エイリアス、関数など、さまざまな種類のアイテムを削除できます。
例
例 1: ファイル名拡張子を持つファイルを削除する
このコマンドは、名前にドット ('.') を含むすべてのファイルを "C:\Test" フォルダから削除します。 このコマンドではドットが指定されているため、ファイル名拡張子のないフォルダーやファイルは削除されません。
Remove-Item C:\Test\*.*
例 2: フォルダ内のドキュメント ファイルの一部を削除する
このコマンドは、ファイル名拡張子が ".doc" で、名前が 1 を含まないすべてのファイルを現在のフォルダから削除します。 ワイルドカード文字 ('*') を使用して、現在のフォルダの内容を指定します。 Include パラメータと Exclude パラメータを使用して、削除するファイルを指定します。
Remove-Item * -Include *.doc -Exclude *1*
例 3: 非表示の読み取り専用ファイルを削除する
このコマンドは、 非表示 で 読み取り専用のファイルを削除します。 Path パラメーターを使用してファイルを指定します。 Force パラメータを使用して削除します。 Force を使用しない場合、読み取り専用ファイルや隠しファイルを削除することはできません。
Remove-Item -Path C:\Test\hidden-RO-file.txt -Force
例 4: サブフォルダ内のファイルを再帰的に削除する
このコマンドは、現在のフォルダとすべてのサブフォルダ内のすべての CSV ファイルを再帰的に削除します。
の Remove-Item
パラメーターには既知の問題があるため、この例のコマンドでは Get-ChildItem
を使用して目的のファイルを取得し、パイプライン演算子を使用してそれらを Remove-Item
に渡します。
Get-ChildItem
コマンドでは、Path の値は '*' で、これは現在のフォルダの内容を表します。
Include を使用して CSV ファイルの種類を指定し、Recurse を使用して取得を再帰的にします。
ファイルの種類 ( -Path *.csv
など) をパスに指定しようとすると、コマンドレットは検索の件名を子項目がないファイルと解釈し、 Recurse は失敗します。
Get-ChildItem * -Include *.csv -Recurse | Remove-Item
例 5: サブキーを再帰的に削除する
このコマンドは、"OldApp" レジストリ キーとそのすべてのサブキーと値を削除します。
Remove-Item
を使用してキーを削除します。
パスは指定されていますが、オプションのパラメーター名 (Path) は省略されています。
Recurse パラメーターは、"OldApp" キーのすべての内容を再帰的に削除します。 キーにサブキーが含まれている場合に Recurse パラメータを省略すると、キーの内容を削除することを確認するように求められます。
Remove-Item HKLM:\Software\MyCompany\OldApp -Recurse
例 6: 特殊文字を含むファイルの削除
次の例は、角かっこや括弧などの特殊文字を含むファイルを削除する方法を示しています。
Get-ChildItem
Directory: C:\temp\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/1/2018 12:19 PM 1362 myFile.txt
-a---- 6/1/2018 12:30 PM 1132 myFile[1].txt
-a---- 6/1/2018 12:19 PM 1283 myFile[2].txt
-a---- 6/1/2018 12:19 PM 1432 myFile[3].txt
Get-ChildItem | Where-Object Name -Like '*`[*'
Directory: C:\temp\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/1/2018 12:30 PM 1132 myFile[1].txt
-a---- 6/1/2018 12:19 PM 1283 myFile[2].txt
-a---- 6/1/2018 12:19 PM 1432 myFile[3].txt
Get-ChildItem | Where-Object Name -Like '*`[*' | ForEach-Object { Remove-Item -LiteralPath $_.Name }
Get-ChildItem
Directory: C:\temp\Downloads
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/1/2018 12:19 PM 1362 myFile.txt
例 7: 代替データ・ストリームの削除
この例では、 Remove-Item
コマンドレットの Stream 動的パラメーターを使用して、代替データ ストリームを削除する方法を示します。 stream パラメーターは、Windows PowerShell 3.0 で導入されました。
最初のコマンドでは、 コマンドレットの Get-Item
動的パラメーターを使用して、"Copy-Script.ps1" ファイルの Zone.Identifier ストリームを取得します。
2 番目のコマンドは、 コマンドレットの Remove-Item
動的パラメーターを使用して、ファイルの Zone.Identifier ストリームを削除します。
3 番目のコマンドでは、 コマンドレットの Get-Item
動的パラメーターを使用して、Zone.Identifier ストリームが削除されていることを確認します。
4 番目のコマンドは Get-Item
ファイルが削除されていないことを確認するために Stream パラメーターを指定せずにコマンドレットを実行します。
Get-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier
FileName: \\C:\Test\Copy-Script.ps1
Stream Length
------ ------
Zone.Identifier 26
Remove-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier
Get-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier
Get-Item : Could not open alternate data stream 'Zone.Identifier' of file 'C:\Test\Copy-Script.ps1'.
At line:1 char:1
+ Get-Item 'C:\Test\Copy-Script.ps1' -Stream Zone.Identifier
+ [!INCLUDE[]()][!INCLUDE[]()][!INCLUDE[]()][!INCLUDE[]()][!INCLUDE[]()]~~
+ CategoryInfo : ObjectNotFound: (C:\Test\Copy-Script.ps1:String) [Get-Item], FileNotFoundE
xception
+ FullyQualifiedErrorId : AlternateDataStreamNotFound,Microsoft.PowerShell.Commands.GetItemCommand
Get-Item C:\Test\Copy-Script.ps1
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 8/4/2011 11:15 AM 9436 Copy-Script.ps1
パラメーター
-Confirm
コマンドレットを実行する前に確認を求めるメッセージが表示されます。
型: | SwitchParameter |
Aliases: | cf |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Credential
注
このパラメーターは、PowerShell でインストールされているプロバイダーではサポートされていません。 別のユーザーを偽装したり、このコマンドレットの実行時に資格情報を昇格したりするには、Invoke-Commandを使用します。
型: | PSCredential |
配置: | Named |
規定値: | Current user |
必須: | False |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Exclude
このコマンドレットが省略する項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターンを入力します (例: *.txt)。 ワイルドカード文字を使用できます。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Filter
プロバイダーの形式または言語でフィルターを指定します。 このパラメーターの値は、Path パラメーターを修飾します。
ワイルドカード文字の使用を含むフィルターの構文は、プロバイダーによって異なります。 フィルターは、取得後に PowerShell でオブジェクトをフィルター処理するのではなく、コマンドレットがオブジェクトを取得するときにプロバイダーによって適用されるため、他のパラメーターよりも効率的です。
型: | String |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Force
コマンドレットは、非表示のファイルや読み取り専用のファイル、読み取り専用のエイリアスや変数など、他の方法では変更できない項目を強制的に削除します。 コマンドレットでは、定数のエイリアスや変数を削除できません。 実装はプロバイダーによって異なります。 詳細については、about_Providersを参照してください。 Force パラメーターを使用しても、コマンドレットはセキュリティ制限をオーバーライドできません。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Include
削除する項目を指定します。 このパラメーターの値は、Path パラメーターを修飾します。 "*.txt" などのパス要素またはパターンを入力します。 ワイルドカード文字を使用できます。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-LiteralPath
削除する項目のパスを指定します。 Path パラメーターとは異なり、LiteralPath の値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。
型: | String[] |
Aliases: | PSPath |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Path
削除する項目のパスを指定します。 ワイルドカード文字を使用できます。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-Recurse
このコマンドレットが、指定した場所と、その場所のすべての子項目の項目を削除することを示します。
Include パラメーターと共に使用すると、Recurse パラメーターによってすべてのサブフォルダーまたはすべての子項目が削除されない場合があります。
これは既知の問題です。
回避策として、このトピックの「例 4」で説明されているように、 Get-ChildItem -Recurse
コマンドの結果を Remove-Item
にパイプ処理してみてください。
型: | SwitchParameter |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Stream
Stream パラメーターは、FileSystem プロバイダーが Remove-Item
に追加する動的パラメーターです。
このパラメーターは、ファイル システム ドライブでのみ機能します。
Remove-Item
を使用して、代替データストリームを削除できます。
ただし、インターネットからダウンロードされたファイルをブロックするセキュリティ チェックを排除する推奨される方法ではありません。
ダウンロードしたファイルが安全であることを確認する場合は、Unblock-File
コマンドレットを使用します。
このパラメーターは、Windows PowerShell 3.0 で導入されました。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-UseTransaction
アクティブなトランザクションにコマンドを含みます。 このパラメーターは、トランザクションが進行中の場合にのみ有効です。 詳細については、about_Transactions を参照してください。
型: | SwitchParameter |
Aliases: | usetx |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-WhatIf
コマンドレットを実行した場合の動作を示します。 コマンドレットは実行されません。
型: | SwitchParameter |
Aliases: | wi |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
文字列に含まれるパスは、このコマンドレットにパイプできますが、リテラル パスはパイプできません。
出力
None
このコマンドレットによる戻り値はありません。
メモ
Remove-Item
コマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用可能なプロバイダーを一覧表示するには、「Get-PsProvider
」と入力します。 詳細については、about_Providersを参照してください。