Исключение аргумента с GetVersionInfo и powershell - PullRequest
1 голос
/ 17 декабря 2009

Я пытаюсь использовать 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 Ответ

6 голосов
/ 17 декабря 2009

.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
...