Я пытаюсь получить метаданные из файлов. Я использую пример кода, найденный здесь.
Ниже приведен пример кода, который я использую, чтобы попытаться получить доступ к ЛЮБОЙ папке, поскольку я, похоже, не могу этого сделать:
$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())
Я что-то упускаю?