2017-08-14 73 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,在這裏,你只需要它是一個字符串你想要詢問的路徑。

你也可能只是把路徑放在那裏,而不是爲了一個目的有兩個變量。