PowerShell 削除フォルダー
-
PowerShell で
Remove-item
コマンドレットを使用してフォルダーを削除する - PowerShell でコマンドプロンプトを使用してフォルダーを削除する
-
PowerShell で
FileSystem
オブジェクトメソッドを使用してフォルダーを削除する - PowerShell で.Net クラスを使用してフォルダーを削除する
PowerShell のフォルダー削除アクションは、ローカルパスか共有パスかに関係なく、特定の場所からフォルダーを削除します。
この記事では、PowerShell を使用してフォルダーを削除するさまざまな方法に焦点を当てています。
PowerShell で Remove-item
コマンドレットを使用してフォルダーを削除する
Remove-Item
コマンドレットを使用して、1つ以上のオブジェクトを削除できます。
削除には 2つの異なる構文を使用できます。ただし、これら 2つは別々に使用できますが、組み合わせて使用することはできないことに注意してください。
- 構文 1
Remove-Item
[-Path] <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-Stream <String[]>]
[<CommonParameters>]
- 構文 2
Remove-Item
-LiteralPath <String[]>
[-Filter <String>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Recurse]
[-Force]
[-Credential <PSCredential>]
[-WhatIf]
[-Confirm]
[-Stream <String[]>]
[<CommonParameters>]
-Path
と -Literalpath
の両方を同じ構文で使用することはできません。
Remove-item
パラメータ
使用される最も一般的なパラメータの名前と説明を以下に示します。
名前 | 説明 |
---|---|
-Path |
削除するものの場所を指定します。ワイルドカード文字の使用に制限はありません。 |
-LiteralPath |
1つ以上の場所に指定されたパス |
-Confirm |
コマンドレットを実行する前に確認を求められます |
-Exclude |
操作中にコマンドレットが除外する項目 |
-Credential |
PowerShell がインストールされているプロバイダーは、このパラメーターをサポートしていません。このコマンドレットを使用する場合は、Invoke-Command を使用して、他のユーザーになりすますか、特権をエスカレーションします。 |
-Filter |
パスパラメータを検証するためのフィルタ |
-Force |
プライベートまたは読み取り専用のファイル/エイリアスや変数など、他の方法では変更できないオブジェクトを強制的に削除します。 |
-Include |
コマンドレットが操作中に含めるアイテム |
-Recurse |
このコマンドレットは、指定された場所のオブジェクトと、その場所のすべての子アイテムを破棄します。 |
-Stream |
Stream 引数は、FileSystem プロバイダーによって Remove-Item に追加される動的パラメーターです。この設定は、ファイルシステムを備えたドライブにのみ適用されます。 |
-WhatIf |
コマンドレットが実行された場合に何が起こるかを示します。 |
さまざまな構文の使用法とともにいくつかの例を見てみましょう。
例 1:
ここでは、以下のコマンドを使用して test1
フォルダーを削除します。最後に、フォルダーが削除されることがわかります。
Remove-Item 'D:\temp\Test1'
例 2:
test2 フォルダーを再帰的に削除します。PowerShell は、前の例でディレクトリが空かどうかを確認します。このシナリオでは、フォルダが削除されるだけです。
Remove-Item 'D:\temp\test2' -Recurse
例 3:-RemoveItem
で -LiteralPath
を使用する
-LiteralPath
は、-Force
および -Recurse
パラメーターとともに使用されます。そのため、確認プロンプトを表示せずに、指定されたパス内のフォルダーとともにアイテムを強制的に削除します。
Remove-Item -LiteralPath "foldertodelete" -Force -Recurse
例 4:パイプラインとしての Remove-item
最初に Get-ChildItem を使用してフォルダーとファイルを取得し、次に Remove-Item
を使用して前のコマンドの結果をパイプライン処理します。
Get-ChildItem C:\Temp\TestFolder\ | Remove-Item -Recurse -Force -Verbose
ここでの唯一の問題は、フォルダの内容のみが削除され、フォルダ自体は削除されないことです。したがって、フォルダを削除するには、他のコードスニペットを追加する必要があります。
PowerShell でコマンドプロンプトを使用してフォルダーを削除する
ほとんどのコマンドラインユーザーは、rmdir
コマンドを使用してフォルダーを削除または削除します。構文は、以下に示すように、フォルダパスとともに rmdir
です。
rmdir C:\Temp\TestFolder
PowerShell で FileSystem
オブジェクトメソッドを使用してフォルダーを削除する
PowerShell では、フォルダーを削除するためのさまざまなオプションを利用できます。これらの 1つは、ファイルシステムオブジェクトメソッドです。この手順には 2つのフェーズがあります。最初のステップでは、ファイルシステムオブジェクトを作成します。次に、2 番目のステップで、DeleteFolder()
関数を使用して、関連付けられたオブジェクトのフォルダーを破棄します。
したがって、これを行うには、最初に test.ps1
ファイルを作成してから、以下に示す次のコマンドを追加します。
$object = New-Object -ComObject Scripting.FileSystemObject
$object.DeleteFolder("C:\Temp\TestFolder")
最後に、test.ps1
ファイルを実行すると、目的のフォルダーが削除されます。
PowerShell で.Net クラスを使用してフォルダーを削除する
PowerShell では、System.IO.Directory
クラスと Delete()
メソッドが.NETFramework によってフォルダーを削除するために使用されます。指定されたフォルダが空でない場合、この操作は例外をスローします。
> [System.IO.Directory]::Delete("C:\Temp\TestFolder")
この空でないフォルダを削除するには、Delete()
関数の $true
オプションを使用します。
System.IO.Directory]::Delete("C:\Temp\TestFolder", $true)
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.