title: PowerShell Could Not Find Item - Path With Spaces IOException
body: <pre><code># --------------------------------------------------------- 
  # ScriptingGamesBeginnerEvent8_PS1.ps1 
  # ed wilson, msft 8/21/2009 
  # PS1 version of HSG-08-19-09 http://bit.ly/1d8Rww 
  # 
  # --------------------------------------------------------- 
  Param( 
   [string]$path = 'C:\', 
   [int]$first = 50 
  )# end param 
  # *** Function Here *** 
  
  function Get-DirSize ($path){ 
  
    BEGIN {} 
  
    PROCESS{ 
      $size = 0 
      $folders = @() 
  
      foreach ($file in (Get-ChildItem $path -Force -ea SilentlyContinue)) { 
        if ($file.PSIsContainer) { 
          $subfolders = @(Get-DirSize $file.FullName) 
          $size += $subfolders[-1].Size 
          $folders += $subfolders 
        } else { 
          $size += $file.Length 
        } 
      } 
  
      $object = New-Object -TypeName PSObject 
      $object | Add-Member -MemberType NoteProperty -Name Folder -Value (Get-Item $path).fullname
      $object | Add-Member -MemberType NoteProperty -Name Size -Value $size 
      $folders += $object 
      Write-Output $folders 
    } 
  
    END {} 
  } # end function Get-DirSize 
  
  Function Get-FormattedNumber($size) 
  { 
    IF($size -ge 1GB) 
     { 
        "{0:n2}" -f  ($size / 1GB) + " GigaBytes" 
     } 
   ELSEIF($size -ge 1MB) 
      { 
        "{0:n2}" -f  ($size / 1MB) + " MegaBytes" 
      } 
   ELSE 
      { 
        "{0:n2}" -f  ($size / 1KB) + " KiloBytes" 
      } 
  } #end function Get-FormattedNumber 
  
   # *** Entry Point to Script *** 
  
   if(-not(Test-Path -Path $path))  
     {  
       Write-Host -ForegroundColor red "Unable to locate $path"  
       Help $MyInvocation.InvocationName -full 
       exit  
     } 
   Get-DirSize -path $path |  
   Sort-Object -Property size -Descending |  
   Select-Object -Property folder, size -First $first | 
   Format-Table -Property Folder,  
    @{ Label="Size of Folder" ; Expression = {Get-FormattedNumber($_.size)} } 
  </code></pre>
  
  <p>So I have this script which I got from 
  <a href="http://gallery.technet.microsoft.com/scriptcenter/36bf0988-867f-45be-92c0-f9b24bd766fb#content" rel="noreferrer">http://gallery.technet.microsoft.com/scriptcenter/36bf0988-867f-45be-92c0-f9b24bd766fb#content</a></p>
  
  <p>I've been playing around with it and created a batch file to help handle the log output of this file and such. However, I'm noticing that paths with spaces in them don't get read. For example ..Documents\My Music</p>
  
  <pre><code>    Get-Item : Could not find item C:\Users\MyUser\Documents\My Music.
      At C:\test.ps1:32 char:80
      +     $object | Add-Member -MemberType NoteProperty -Name Folder -Value (Get-It
      em &lt;&lt;&lt;&lt;  $path).fullname
  + CategoryInfo          : ObjectNotFound: (C:\Users\MyUser\Documents\My
  Music:String) [Get-Item], IOException
   + FullyQualifiedErrorId : ItemNotFound,Microsoft.PowerShell.Commands.GetIt
  emCommand
  </code></pre>
  
  <p>On the TechNet page for the code, someone brings the issue up but no solution is given. I'm not sure how to fix it here. I've played with the $path argument, surrounding it in " " or ' ' and such.</p>
  
  <p>Here is part of the batch file to execute it:</p>
  
  <pre><code>  C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe -noe -command "&amp;       'C:\test.ps1' -path "'C:\Users\MyUser\'""
  </code></pre>