Объект Powershell Shell.Application не находит папку

Я пытаюсь получить метаданные из файлов. Я использую пример кода, найденный здесь.

Ниже приведен пример кода, который я использую, чтобы попытаться получить доступ к ЛЮБОЙ папке, поскольку я, похоже, не могу этого сделать:

$TheThing = "C:\Windows"

$folder = {$TheThing}

foreach($sFolder in $folder) 
  { 
   $a = 0 
   $objShell = New-Object -ComObject Shell.Application 
   $objFolder = $objShell.NameSpace($folder)

   foreach ($File in $objFolder.items()) 
    {  
     $FileMetaData = New-Object PSOBJECT 
      for ($a ; $a  -le 266; $a++) 
       {  
         if($objFolder.getDetailsOf($File, $a)) 
           { 
             $hash += @{$($objFolder.getDetailsOf($objFolder.items, $a))  = 
                   $($objFolder.getDetailsOf($File, $a)) } 
            $FileMetaData | Add-Member $hash 
            $hash.clear()  
           } #end if 
       } #end for  
     $a=0 
     $FileMetaData 
    } #end foreach $file 
  } #end foreach $sfolder 

Линия:

$objFolder = $objShell.NameSpace($folder)

... на самом деле ничего не делает. На самом деле, когда код попадает в цикл foreach, он завершается с ошибкой «Вы не можете вызвать метод для выражения с нулевым значением» в строке:

foreach ($File in $objFolder.items()) 

Я что-то упускаю?


person crackedcornjimmy    schedule 14.08.2017    source источник


Ответы (1)


Эта строка вызывает вашу проблему:

$folder = {$TheThing}

Это должно быть:

$folder = $TheThing

Используя { }, вы делаете его скриптовым блоком, тогда как вам просто нужно, чтобы он был строка с путем, который вы хотите опросить.

Вы также можете просто указать путь вместо двух переменных для одной цели.

person Mark Wragg    schedule 14.08.2017