Table of Contents

Method PSDeleteContent

Namespace
IOInfoExtensions.PowerShell
Assembly
IOInfoExtensions.PowerShell.dll

PSDeleteContent(PSObject)

PowerShell wrapper for the DeleteContent method.
public static object PSDeleteContent(PSObject directory)

Remarks

This method deletes all the files and directories within the calling DirectoryInfo object.

It does not delete the directory itself.

Parameters

directory PSObject
The calling DirectoryInfo object.

Returns

object
N/A

Examples

Example 1
Delete all content within a directory.
var demoRoot = new DirectoryInfo("C:\\Demo");
var children = demoRoot.GetFileSystemInfos("*", SearchOption.AllDirectories).ToList();

Console.WriteLine($"Number of Children:\n\t{children.Count}");
Console.WriteLine("Children:");
children.ForEach(x => Console.WriteLine($"\t{x.FullName}"));

demoRoot.DeleteContent();
children = demoRoot.GetFileSystemInfos("*", SearchOption.AllDirectories).ToList();
Console.WriteLine($"Number of Children after delete:\n\t{children.Count}");
Console.WriteLine($"Root Exists:\n\t{demoRoot.Exists}");

/*
Output:
Number of Children:
        6
Children:
        C:\Demo\ChildDir1
        C:\Demo\ChildDir2
        C:\Demo\ChildFile1.txt
        C:\Demo\ChildFile2.txt
        C:\Demo\ChildDir2\ChildFile1.txt
        C:\Demo\ChildDir2\ChildFile2.txt
Number of Children after delete:
        0
Root Exists:
        True
*/
$directory = New-Object System.IO.DirectoryInfo 'C:\Demo'
$children = $directory.GetFileSystemInfos("*", [System.IO.SearchOption]::AllDirectories)

Write-Host "Number of Children:`n`t$($children.Count)"
Write-Host "Children:"
$children.FullName | ForEach-Object { Write-Host "`t$_" }

$directory.DeleteContent()
$children = $directory.GetFileSystemInfos("*", [System.IO.SearchOption]::AllDirectories)
Write-Host "Number of Children after delete:`n`t$($children.Count)"
Write-Host "Root Exists:`n`t$($directory.Exists)"

<#
Output:
Number of Children:
        6
Children:
        C:\Demo\ChildDir1
        C:\Demo\ChildDir2
        C:\Demo\ChildFile1.txt
        C:\Demo\ChildFile2.txt
        C:\Demo\ChildDir2\ChildFile1.txt
        C:\Demo\ChildDir2\ChildFile2.txt
Number of Children after delete:
        0
Root Exists:
        True
#>
Example 2
Safely calls DeleteContent even if no content exists.
var demoRoot = new DirectoryInfo("C:\\Demo");
var children = demoRoot.GetFileSystemInfos("*", SearchOption.AllDirectories).ToList();
Console.WriteLine($"Number of Children:\n\t{children.Count}");

Console.WriteLine("Deleting content...");
demoRoot.DeleteContent();
children = demoRoot.GetFileSystemInfos("*", SearchOption.AllDirectories).ToList();
Console.WriteLine($"Number of Children after delete:\n\t{children.Count}");

Console.WriteLine("Deleting content...");
demoRoot.DeleteContent();
children = demoRoot.GetFileSystemInfos("*", SearchOption.AllDirectories).ToList();
Console.WriteLine($"Number of Children after second delete:\n\t{children.Count}");

Console.WriteLine($"Root Exists:\n\t{demoRoot.Exists}");

Console.WriteLine("Deleting Root...");
demoRoot.Delete();
demoRoot.Refresh();
Console.WriteLine($"Root Exists after delete:\n\t{demoRoot.Exists}");

Console.WriteLine("Deleting content...");
demoRoot.DeleteContent();
children = demoRoot.GetFileSystemInfos("*", SearchOption.AllDirectories).ToList();
Console.WriteLine($"Number of Children after root delete:\n\t{children.Count}");

/*
Output:

Number of Children:
        6
Deleting content..."
Number of Children after delete:
        0
Deleting content..."
Number of Children after second delete:
        0
Root Exists:
        True
Deleting Root...
Root Exists after delete:
        False
Deleting content...
Number of Children after root delete:
        0
*/
$directory = New-Object System.IO.DirectoryInfo 'C:\Demo'
$children = $directory.GetFileSystemInfos("*", [System.IO.SearchOption]::AllDirectories)
Write-Host "Number of Children:`n`t$($children.Count)"

Write-Host "Deleting content..."
$directory.DeleteContent()
$children = $directory.GetFileSystemInfos("*", [System.IO.SearchOption]::AllDirectories)
Write-Host "Number of Children after delete:`n`t$($children.Count)"

Write-Host "Deleting content..."
$directory.DeleteContent()
$children = $directory.GetFileSystemInfos("*", [System.IO.SearchOption]::AllDirectories)
Write-Host "Number of Children after second delete:`n`t$($children.Count)"

Write-Host "Root Exists:`n`t$($directory.Exists)"

Write-Host "Deleting Root..."
$directory.Delete()
$directory.Refresh()
Write-Host "Root Exists after delete:`n`t$($directory.Exists)"

Write-Host "Deleting content..."
$directory.DeleteContent()
$children = $directory.GetFileSystemInfos("*", [System.IO.SearchOption]::AllDirectories)
Write-Host "Number of Children after root delete:`n`t$($children.Count)"

<#
Output:
Number of Children:
        6
Number of Children after delete:
        0
Number of Children after second delete:
        0
Root Exists:
        True
Deleting Root...
Root Exists after delete:
        False
Deleting content...
Number of Children after root delete:
        0
#>

Exceptions

PSInvalidOperationException