Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Use Test-Path to check whether a PowerShell path exists before acting on it. For a variable containing an exact path, the safest general pattern is Test-Path -LiteralPath $path; add -PathType Leaf for a file or -PathType Container for a directory.

Check for a path before running a command

Test-Path returns $true when all elements of the specified path exist and $false when any are missing. Use its Boolean result directly in an if condition:

$path = 'C:Reportstoday.csv'

if (Test-Path -LiteralPath $path -PathType Leaf) {
    Import-Csv -LiteralPath $path
}
else {
    Write-Warning "File not found: $path"
}

Here, -PathType Leaf means the check is for a file-like terminal item. The example checks first, then imports the CSV only if the path passes the check.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose between -LiteralPath and -Path

The choice depends on whether the value is an exact name or a pattern. Microsoft documents that -Path can interpret wildcard characters, while -LiteralPath uses the value exactly as typed without interpreting wildcard characters. See the Microsoft Learn documentation for Windows PowerShell 5.1.

Parameter Use it when Example
-LiteralPath You mean one exact path, especially when a name may contain characters such as [ or ]. Test-Path -LiteralPath $path
-Path You intend wildcard matching. Test-Path -Path 'C:Reports*.csv'

For user-provided or variable-held literal names, prefer -LiteralPath if wildcard characters should be treated as ordinary characters. Use -Path when matching a pattern is intentional; wildcard and filter behavior can depend on the provider.

Check whether the path is a file or directory

Without a path-type constraint, Test-Path checks for the path without requiring a particular item type. Use -PathType when the command that follows needs a specific kind of item:

Rank #2
Sale
PowerShell for Sysadmins: Workflow Automation Made Easy
  • Book - powershell for sysadmins: workflow automation made easy
  • Language: english
  • Binding: paperback
  • -PathType Leaf checks for a file-like terminal item.
  • -PathType Container checks for a directory-like container.
Test-Path -LiteralPath $filePath -PathType Leaf
Test-Path -LiteralPath $folderPath -PathType Container

Existence is different from valid path syntax

-IsValid checks whether a path’s syntax is valid; it does not establish that the path exists. Use a normal Test-Path check when your question is whether the target is present. Microsoft also documents version-specific interactions between -IsValid and -PathType, so check the documentation for your installed PowerShell release before relying on a combined-parameter edge case.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Handle empty and null input

Empty or whitespace path input returns $false. By contrast, $null, an array of null values, or an empty array produces a non-terminating error according to Microsoft’s parameter documentation. If a function or script can receive null, validate that input before calling Test-Path.

Remember that paths can refer to providers

Test-Path works with data exposed through PowerShell providers, not only filesystem locations. A PowerShell path can refer to provider data such as the registry. Make sure the path uses the intended provider and context.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Account for PowerShell version and later failures

Microsoft maintains separate PowerShell 7.6 and Windows PowerShell 5.1 documentation. Use the page matching the release you run for exact syntax and behavior.

The 7.6 documentation notes that before PowerShell 7.5, -NewerThan was ignored with -PathType values other than Any, and -OlderThan was ignored when combined with -NewerThan. Starting with 7.5, those date parameters can be used with any -PathType value to test a date range and directory age.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A successful existence check reports the path state at the time of the check; it does not guarantee that a later command will succeed. Permissions, concurrent changes, and other I/O conditions can still cause the operation to fail, so handle errors from the operation itself when appropriate.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.