次の方法で共有


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

入力

String

文字列に含まれるパスは、このコマンドレットにパイプできますが、リテラル パスはパイプできません。

出力

None

このコマンドレットによる戻り値はありません。

メモ

Remove-Item コマンドレットは、任意のプロバイダーによって公開されるデータを操作するように設計されています。 セッションで使用可能なプロバイダーを一覧表示するには、「Get-PsProvider」と入力します。 詳細については、about_Providersを参照してください。