Al ejecutar el script yo mismo se genera una cosa y al ejecutarlo desde el instalador se genera otra cosa.

Al ejecutar el script yo mismo se genera una cosa y al ejecutarlo desde el instalador se genera otra cosa.

Espero que esto no sea un problema genérico, actualmente tengo una tarea en el trabajo que tiene un comportamiento extraño. Tenemos una aplicación (Instalador) que ejecutan algunosmurciélagoarchivos. Nada extraño aquí. Ahora nos gustaría instalar Sql Server Native en caso de que no exista en la máquina.

Entonces creamos un script que verifica dónde está instalado o no un software.

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

Lo llamamos así desde el archivo bat.

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

Entonces aquí viene el problema.

Si ejecuto esto yo mismo en una máquina virtual que tiene instalado Microsoft SQL Server 2012 Native Client, el resultado es "1" (verdadero)

El mismo bat que estoy ejecutando se ejecuta desde nuestro instalador (llama exactamente al mismo archivo bat) pero ahora genera "0" (falso)

Esto me hace pensar que es algo sobre la persona que llama del guión, pero no tengo idea de qué será. ¿Algunas ideas?

información relacionada