title: How do I pass literal path to Start-process in PowerShell?
body: <p>Here I have a PowerShell script which opens all jpg files in a folder in mspaint to save them. It repairs exif thumbs and lessens file size.</p>
  
  <p>The problem is that it can't send mspaint jpg files which have spaces in their paths. So how do I make Start-process to get the literal path of the jpg files?</p>
  
  <pre><code>$kansio = ($args[0]).replace("'","")
  $tiedostot = 0
  Write-Host "Folder to process: $kansio" -foregroundcolor White
  
  Get-ChildItem -LiteralPath $kansio | foreach{if($_.Extension -eq ".jpg"){$_.FullName}} |
  foreach{
      $id = (Start-process mspaint $_ -ea 0 -PassThru).Id
      $vikaTallennus = (Get-ChildItem -LiteralPath $_).LastWriteTime
      [bool]$onnistui = 0
  
      [void][System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic")
      [void][System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")
  
      do
      {
          try
          {
              if((Get-Process -Id $id -ea 'stop').WaitForInputIdle())
              {
                  [Microsoft.VisualBasic.Interaction]::AppActivate($id)
                  [System.Windows.Forms.SendKeys]::SendWait("^s")
                  [System.Windows.Forms.SendKeys]::SendWait("{esc}")
                  for($i=1; $i -le 10; $i++)
                  {
                      if((Get-ChildItem -LiteralPath $_).LastWriteTime -gt $vikaTallennus)
                      {
                          try
                          {
                              Stop-Process -Id $id -force -ea 'stop'
                              Write-Host "Done: $_" -foregroundcolor Green
                              $onnistui = 1
                              break
                          }
                          catch
                          {
                              #Write-Host "Failed to close the process" -foregroundcolor Red
                              #Start-Sleep -milliseconds 100
                          }
                      }
                  }
              }
          }
          catch
          {
              #Write-Host "Failed to catch the process" -foregroundcolor Red
              #Start-Sleep -milliseconds 100
          }
      }
      until((Get-Process -Id $id -ea 0) -eq $null -or $id -eq $null)
      if($onnistui){$tiedostot++}else{Write-Host "Failed: $_" -foregroundcolor Red}
  }
  Write-Host "Files saved: $tiedostot" -foregroundcolor Green
  </code></pre>