Table of Contents

Method PSTryDelete

Namespace
IOInfoExtensions.PowerShell
Assembly
IOInfoExtensions.PowerShell.dll

PSTryDelete(PSObject)

PowerShell wrapper for the FileInfo.TryDelete method.
public static object PSTryDelete(PSObject file)

Remarks

Attempts to delete the file. If the file or it's parent directory do not exist, no exception is thrown.

System.IO.FileInfo has a Delete method, but it throws an exception if the parent directory does not exist.

Parameters

file PSObject
The FileInfo object to be deleted.

Returns

object
N/A

Examples

Example 1
Called on an existing file.
var file = new FileInfo("C:\\Demo\\ChildFile1.txt");

Console.WriteLine("File Information:");
Console.WriteLine(GetFileTable(new[] { file }, includeDirectory: true));

Console.WriteLine("Deleting file...");
file.TryDelete();

Console.WriteLine("File Information after delete:");
Console.WriteLine(GetFileTable(new[] { file }, includeDirectory: true));

/*
File Information:
        Directory Name           DirectoryExists Exists
        --------- ----           --------------- ------
        C:\Demo   ChildFile1.txt            True   True
Deleting file...
File Information after delete:
        Directory Name           DirectoryExists Exists
        --------- ----           --------------- ------
        C:\Demo   ChildFile1.txt            True  False
*/
$file = New-Object System.IO.FileInfo 'C:\Demo\ChildFile1.txt'

Write-Host "File Information:"
Write-Host (Get-FileTable -Files $file -IncludeDirectory)

Write-Host "Deleting file..."
$file.TryDelete()

Write-Host "File Information after delete:"
Write-Host (Get-FileTable -Files $file -IncludeDirectory)

<#
Output:
File Information:
        Directory Name           DirectoryExists Exists
        --------- ----           --------------- ------
        C:\Demo   ChildFile1.txt            True   True
Deleting file...
File Information after delete:
        Directory Name           DirectoryExists Exists
        --------- ----           --------------- ------
        C:\Demo   ChildFile1.txt            True  False
#>
Example 2
Called on a non-existing file but parent directory does exist.
var file = new FileInfo("C:\\Demo\\ChildFile4.txt");

Console.WriteLine("File Information:");
Console.WriteLine(GetFileTable(new[] { file }, includeDirectory: true));

Console.WriteLine("Deleting file...");
file.TryDelete();

Console.WriteLine("File Information after delete:");
Console.WriteLine(GetFileTable(new[] { file }, includeDirectory: true));

/*
File Information:
        Directory Name           DirectoryExists Exists
        --------- ----           --------------- ------
        C:\Demo   ChildFile4.txt            True  False
Deleting file...
File Information after delete:
        Directory Name           DirectoryExists Exists
        --------- ----           --------------- ------
        C:\Demo   ChildFile4.txt            True  False
*/
$file = New-Object System.IO.FileInfo 'C:\Demo\ChildFile4.txt'

Write-Host "File Information:"
Write-Host (Get-FileTable -Files $file -IncludeDirectory)

Write-Host "Deleting file..."
$file.TryDelete()

Write-Host "File Information after delete:"
Write-Host (Get-FileTable -Files $file -IncludeDirectory)

<#
Output:
File Information:
        Directory Name           DirectoryExists Exists
        --------- ----           --------------- ------
        C:\Demo   ChildFile4.txt            True  False
Deleting file...
File Information after delete:
        Directory Name           DirectoryExists Exists
        --------- ----           --------------- ------
        C:\Demo   ChildFile4.txt            True  False
#>
Example 3
Called on a non-existing file and parent directory does not exist.
var file = new FileInfo("C:\\Demo\\ChildDir4\\ChildFile4.txt");

Console.WriteLine("File Information:");
Console.WriteLine(GetFileTable(new[] { file }, includeDirectory: true));

Console.WriteLine("Deleting file...");
file.TryDelete();

Console.WriteLine("File Information after delete:");
Console.WriteLine(GetFileTable(new[] { file }, includeDirectory: true));

/*
File Information:
        Directory         Name           DirectoryExists Exists
        ---------         ----           --------------- ------
        C:\Demo\ChildDir4 ChildFile4.txt           False  False
Deleting file...
File Information after delete:
        Directory         Name           DirectoryExists Exists
        ---------         ----           --------------- ------
        C:\Demo\ChildDir4 ChildFile4.txt           False  False
*/
$file = New-Object System.IO.FileInfo 'C:\Demo\ChildDir4\ChildFile4.txt'

Write-Host "File Information:"
Write-Host (Get-FileTable -Files $file -IncludeDirectory)

Write-Host "Deleting file..."
$file.TryDelete()

Write-Host "File Information after delete:"
Write-Host (Get-FileTable -Files $file -IncludeDirectory)

<#
Output:
File Information:
        Directory         Name           DirectoryExists Exists
        ---------         ----           --------------- ------
        C:\Demo\ChildDir4 ChildFile4.txt           False  False
Deleting file...
File Information after delete:
        Directory         Name           DirectoryExists Exists
        ---------         ----           --------------- ------
        C:\Demo\ChildDir4 ChildFile4.txt           False  False
#>

Exceptions

PSInvalidOperationException