Исключение аргумента с 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