Skip to content

Add -LiteralPath parameter to Start-ThreadJob for cross-platform path handling #56

@jshigetomi

Description

@jshigetomi

Summary of the new feature / enhancement

Summary

Start-ThreadJob should support -LiteralPath parameter (with -PSPath and -LP aliases) to match Start-Job's functionality and handle cross-platform file paths that may contain wildcard characters.

Problem

PowerShell is now cross-platform, and characters traditionally used as wildcards (*, ?, [, ]) may be present in filenames on non-Windows systems (e.g., Linux, macOS). Currently, Start-ThreadJob only has a -FilePath parameter, which may cause issues when:

  1. A legitimate filename contains wildcard characters on Unix-like systems
  2. Users need to ensure paths are interpreted literally without pattern matching
  3. Users want API consistency between Start-Job and Start-ThreadJob

Current Behavior

Start-ThreadJob only supports:

Start-ThreadJob -FilePath "path/to/script.ps1"

The -FilePath parameter rejects paths with wildcard characters (see GetScriptBlockFromFile method):

if (WildcardPattern.ContainsWildcardCharacters(filePath))
{
    throw new ArgumentException("FilePath cannot contain wildcards.");
}

Proposed technical implementation details (optional)

Proposed Solution

Add a -LiteralPath parameter to Start-ThreadJob with:

  • Aliases: -PSPath, -LP (matching Start-Job)
  • Behavior: Interprets paths literally without wildcard evaluation
  • Mutual exclusivity: -FilePath and -LiteralPath should be in different parameter sets

Example usage:

# For a file literally named "test[1].ps1" on Linux
Start-ThreadJob -LiteralPath "/home/user/scripts/test[1].ps1"

# With aliases
Start-ThreadJob -PSPath "/home/user/scripts/test[1].ps1"
Start-ThreadJob -LP "/home/user/scripts/test[1].ps1"

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions