2

ファイルのファイル バージョンを取得するために、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 (のように) の場合、期待どおりに動作します。どうしたの?

4

1 に答える 1

7

.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
于 2009-12-16T22:02:04.243 に答える