‘Clear-Recyclebin’ Is Not Recognized As The Name Of A Cmdlet In Powershell Core

Recently I have upgraded to PowerShell Core and slowly switching from Windows PowerShell to PowerShell Core. I have noticed quite a few CmdLets are missing in the PowerShell Core, since it became an open source and supports on cross-platform most of the platform dependent CmdLets won’t work on the other platforms. I usually clear my temp folders and recyclebin in all my computers frequently, and noticed Clear-RecycleBin CmdLet is not a valid CmdLet in PowerShell Core…

Clear-RecycleBin : The term 'Clear-RecycleBin' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Clear-RecycleBin -Force
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Clear-RecycleBin:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

So I have decided to create a PowerShell function to achieve almost the the same functionality of Clear-RecycleBin using .NET class, and here is the function…

Function Empty-RecycleBin
    [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact = 'High')]
        [switch] $Force     # Without confirmation
    if($IsWindows -eq $false) { return } # Exit the script if the OS is other than Windows

    # Since the Crear-RecycleBin CmdLet is not availble on PowerShell Core,
    # achive the same functionality using the .Net Classes.
    $Type = @'
    using System;
    using System.Runtime.InteropServices;
    namespace MyComputer
        public static class RecycleBin
            [DllImport("Shell32.dll", CharSet = CharSet.Unicode)]
            static extern uint SHEmptyRecycleBin(IntPtr hwnd, string pszRootPath, int dwFlags);
            public static void Empty()
                SHEmptyRecycleBin(IntPtr.Zero, null, 1);
    Add-Type -TypeDefinition $Type

    # Bypass confirmation, and empty the recyclebin
    if ($PSBoundParameters.ContainsKey('Force'))

    # Default behaviour, with confirmation empty the recyclebin
    if($PSCmdlet.ShouldProcess('All of the contents of the Recycle Bin','Empty-RecycleBin')){  


I have not added the -DriveLetter flag, since I want to clear the recyclebin from all the drives, if you want clear the recyclebin from a specific drive, you need add the driveLetter argument to the Empty method in the C# code and add the -DriveLetter parameter to the PowerShell function.

Share it on     |   |   |   | 

Download a zip file from the internet and extract using PowerShell.


Excel Reports Using ImportExcel Module From PowerShell Gallery

comments powered by Disqus