自分でスクリプトを実行すると1つのものが出力され、インストーラーから実行すると別のものが出力されます

自分でスクリプトを実行すると1つのものが出力され、インストーラーから実行すると別のものが出力されます

これが一般的な問題ではないことを願っています。現在、仕事で奇妙な動作をするタスクがあります。アプリケーションがあります(インストーラ)を実行するコウモリファイル。ここでは何もおかしなことはありません。マシンに存在しない場合に備えて、Sql Server Native をインストールします。

そこで、ソフトウェアがインストールされている場所を確認するスクリプトを作成しました。

param ([Parameter(Mandatory)]$softwareName, $minimumVersion) 

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table -AutoSize
[array]$matchingInstalledSoftware = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Where-Object {$_.DisplayName -Like $softwareName -and $_.VersionMajor -ge $minimumVersion}

return $matchingInstalledSoftware.Count

batファイルからこのように呼び出します

powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File  checkInstalledSoftware.ps1 -softwareName "Microsoft SQL Server 2012 Native Client*"'

ここで問題が発生します。

Microsoft SQL Server 2012 Native Client がインストールされている VM でこれを自分で実行すると、「1」(true) が出力されます。

私が実行しているのと同じ bat がインストーラーから実行されます (まったく同じ bat ファイルを呼び出します) が、今度は「0」(false) を出力します

これはスクリプトの呼び出し元に関する何かだと思いますが、それが何なのか全く分かりません。何か考えはありますか?

関連情報