Example input

$Path = ".\README.md"
$Path = $env:UserProfile

Require all paths to exist, by stopping at every error

$ErrorActionPreference = [Management.Automation.ActionPreference]::Stop

String

Get path of existing file or folder

[String] $fileOrFolder = $Path -replace '[\\/]$', '' | Convert-Path

Fake path of file or folder

[String] $file = $Path | foreach {
    $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($_)
}
[String] $folder = $Path -replace '[\\/]$', '' | foreach {
    $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($_)
}

Filesystem Information Object

Files and folders contain FullName, Extension, Name, Exists, CreationTime, CreationTimeUtc, LastAccessTime, LastAccessTimeUtc, LastWriteTime, LastWriteTimeUtc, Attributes.

Files also contain Length, DirectoryName, Directory, IsReadOnly.

Folders also contain Parent, Root.

Retrieve information of existing file or folder

[IO.FileInfo] $visibleFile = $Path | Get-Item
[IO.DirectoryInfo] $visibleFolder = $Path -replace '[\\/]$', '' | Get-Item
[IO.FileSystemInfo] $visibleFileOrFolder = $Path -replace '[\\/]$', '' | Get-Item
[IO.FileInfo] $anyFile = $Path | Get-Item -Force
[IO.DirectoryInfo] $anyFolder = $Path -replace '[\\/]$', '' | Get-Item -Force
[IO.FileSystemInfo] $anyFileOrFolder = $Path -replace '[\\/]$', '' | Get-Item -Force

Retrieve information of existing file or folder
or fake information of non-existing file or folder

[IO.FileInfo] $file = $Path | foreach {
    $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($_)
} | foreach { 
    [IO.FileInfo]::new($_)
}
[IO.DirectoryInfo] $folder = $Path -replace '[\\/]$', '' | foreach {
    $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($_)
} | foreach { 
    [IO.DirectoryInfo]::new($_)
}

Resolve path for existing files or folders

Resolve-Path $file

Resolve path files and folders that might not exist

$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($file)