--- external help file: PSScriptTools-help.xml Module Name: PSScriptTools online version: http://bit.ly/2Vtk3ew schema: 2.0.0 --- # Test-EmptyFolder ## SYNOPSIS Test if a folder is empty of files. ## SYNTAX ```yaml Test-EmptyFolder [-Path] [-Passthru] [] ``` ## DESCRIPTION This command will test if a given folder path is empty of all files anywhere in the path. This includes hidden files. The command will return True even if there are empty sub-folders. The default output is True or False but you can use -Passthru to get more information. See examples. ## EXAMPLES ### Example 1 ```powershell PS C:\> Test-EmptyFolder c:\work False ``` Test a single folder from a parameter. ### Example 2 ```powershell PS C:\> Get-ChildItem c:\work -Directory | Test-EmptyFolder -passthru Path Name IsEmpty Computername ---- ---- ------- ------------ C:\work\A A False DESK10 C:\work\alpha alpha False DESK10 C:\work\B B True DESK10 C:\work\data data False DESK10 C:\work\demo3 demo3 True DESK10 C:\work\demos demos False DESK10 ... ``` Test child folders under C:\work. ### Example 3 ```powershell PS C:\> Get-ChildItem c:\work -Directory | Test-EmptyFolder -passthru | Where-object {$_.Isempty} | Foreach-Object { Remove-Item -LiteralPath $_.path -Recurse -force -whatif} What if: Performing the operation "Remove Directory" on target "C:\work\demo3". What if: Performing the operation "Remove Directory" on target "C:\work\installers". What if: Performing the operation "Remove Directory" on target "C:\work\new". What if: Performing the operation "Remove Directory" on target "C:\work\sqlback". What if: Performing the operation "Remove Directory" on target "C:\work\todd". What if: Performing the operation "Remove Directory" on target "C:\work\[data]". ``` Find all empty sub-folders under C:\Work and pipe them to Remove-Item. This is one way to remove empty folders. The example is piping objects to ForEach-Object so that Remove-Item can use the -LiteralPath parameter, because C:\work\[data] is a non-standard path. ## PARAMETERS ### -Passthru Write a test object to the pipeline. ```yaml Type: SwitchParameter Parameter Sets: (All) Aliases: Required: False Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False ``` ### -Path Enter a file system path like C:\Scripts. ```yaml Type: String[] Parameter Sets: (All) Aliases: PSPath Required: True Position: 0 Default value: None Accept pipeline input: True (ByPropertyName, ByValue) Accept wildcard characters: False ``` ### CommonParameters This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). ## INPUTS ### System.String[] ## OUTPUTS ### Boolean ### EmptyFolder ## NOTES Learn more about PowerShell: http://jdhitsolutions.com/blog/essential-powershell-resources/ ## RELATED LINKS [Get-FolderSizeInfo](Get-FolderSizeInfo.md)