GetVersionInfoとpowershellでの引数例外

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

私がチェックしたすべてのファイルにはsamesの結果があります。しかし、私のパスがc: windows notepad.exe(の例のように)の場合、期待どおりに動作します。どうしたの?

ベストアンサー

.NETとPowerShellの現在のディレクトリの概念は必ずしも同じではありません。絶対パスを渡してみてください。

[Diagnostics.FileVersionInfo]::GetVersionInfo(‘C:WindowsSystem32user32.dll’)

ProductVersion FileVersion FileName
————– ———– ——–
6.1.7600.16385 6.1.7600.1638… C:WindowsSystem32user32.dll

また、次のようにGet-ChildItemでこの情報を取得できます。

Get-ChildItem C:WindowsSystem32user32.dll | fl VersionInfo




source
Powershell – 例外処理
Powershellとlogparserの引数
Powershell:カスタム例外の作成
Robocopyと引数を渡すPowerShell
別のPowerShellスクリプトの引数でPowerShellスクリプトを呼び出す
不正な引数の例外
型付き例外をキャッチするPowershell
Powershell 2.0リダイレクトファイルハンドル例外
PowerShellのダッシュ引数を使用するには?
Powershell – 引数の数を数える方法
Rating