Test Path - PowerShell


The Test-Path command verifies the existence of a specified path on the system. It assesses whether the path represents a file, directory, or another type of object accessible by the system. This command is commonly used in scripts and automated tasks to check for the presence of resources and perform actions accordingly.


Test-Path [-LiteralPath] <String> [-PathType <PathType>]  [-ItemType <ItemType>] [-ErrorAction {Stop | Continue | SilentlyContinue}]


  • -LiteralPath: Treat the provided path as a literal string, without any wildcard expansion or variable substitution.
  • -PathType: Filter the results based on the path type. Valid values include: Container, Leaf, Any.
  • -ItemType: Filter the results based on the item type. Valid values include: File, Directory, Any.
  • -ErrorAction: Controls the behavior when errors occur. Stop exits the command with an error, Continue skips the error and continues execution, and SilentlyContinue ignores the error without notification.


Example 1: Verifying a file’s existence

Test-Path -LiteralPath C:\test\myfile.txt

Example 2: Checking for a directory

Test-Path -PathType Container -LiteralPath C:\test\mydirectory

Example 3: Handling errors silently

Test-Path -ErrorAction SilentlyContinue -LiteralPath non\existing\path

Common Issues

  • Improperly formatted paths: Ensure the provided path matches the required format and syntax.
  • Access permissions: The Test-Path command may fail if the user lacks sufficient permissions to access the specified path.
  • Wildcards: When using wildcards in the path, always enclose them in single or double quotes to prevent unexpected results.


  • Use Test-Path in PowerShell scripts to perform conditional actions based on the existence or type of a path.
  • Combine Test-Path with other commands like New-Item or Remove-Item to create or delete files and directories based on a path check.
  • Integrate Test-Path with other tools like Where-Object or ForEach-Object for advanced filtering and automation tasks.
  • Get-ChildItem
  • New-Item
  • Remove-Item