Исключение аргумента с GetVersionInfo и powershell

Я пытаюсь использовать PowerShell, чтобы получить версию файла. Если я щелкну правой кнопкой мыши по файлу и посмотрю на версию, она показывает значение. Вот как я пытаюсь это сделать:

$path = "MSDE2000A";
$info = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($path);

Вот информация об исключении, которую он выдает:

Exception calling "GetVersionInfo" with "1" argument(s): "MSDE2000A.exe"
At line:1 char:58
+ $f = [system.diagnostics.fileversioninfo]::getversioninfo <<<< ("MSDE2000A.exe")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Каждый файл, который я проверял, имеет одинаковый результат. Однако, если мой путь - c:\windows\notepad.exe (как в примере), он работает как положено. В чем дело?

1 ответ

Решение

.NET и PowerShell понятия о текущем каталоге не всегда одинаковы. Попробуйте пройти по абсолютному пути.

[Diagnostics.FileVersionInfo]::GetVersionInfo('C:\Windows\System32\user32.dll')

ProductVersion   FileVersion      FileName
--------------   -----------      --------
6.1.7600.16385   6.1.7600.1638... C:\Windows\System32\user32.dll

Кроме того, вы можете получить эту информацию с помощью Get-ChildItem следующим образом:

Get-ChildItem C:\Windows\System32\user32.dll | fl VersionInfo
Другие вопросы по тегам