
これが一般的な問題ではないことを願っています。現在、仕事で奇妙な動作をするタスクがあります。アプリケーションがあります(インストーラ)を実行するコウモリファイル。ここでは何もおかしなことはありません。マシンに存在しない場合に備えて、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) を出力します
これはスクリプトの呼び出し元に関する何かだと思いますが、それが何なのか全く分かりません。何か考えはありますか?