2017-08-14 114 views
1

我想从文件中获取元数据。我正在使用找到的代码示例herePowershell 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()) 

我缺少的东西?

回答

2

此行是造成您的问题:

$folder = {$TheThing} 

它需要:

$folder = $TheThing 

使用{ }你让一个scriptblock,在这里,你只需要它是一个字符串你想要询问的路径。

你也可能只是把路径放在那里,而不是为了一个目的有两个变量。