Wenn ich das Skript selbst ausführe, wird eine Ausgabe ausgegeben, und wenn ich es vom Installationsprogramm aus ausführe, wird eine andere Ausgabe ausgegeben

Wenn ich das Skript selbst ausführe, wird eine Ausgabe ausgegeben, und wenn ich es vom Installationsprogramm aus ausführe, wird eine andere Ausgabe ausgegeben

Ich hoffe, das ist kein allgemeines Problem. Ich habe derzeit eine Aufgabe bei der Arbeit, die ein seltsames Verhalten aufweist. Wir haben eine Anwendung (Installateur), die einigeSchlägerDateien. Nichts Ungewöhnliches hier. Nun möchten wir Sql Server Native installieren, falls es auf dem Rechner nicht existiert.

Deshalb haben wir ein Skript erstellt, das prüft, ob eine Software installiert ist oder nicht.

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

Wir rufen es so aus der Bat-Datei auf

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

Hier kommt also das Problem.

Wenn ich dies selbst auf einer VM ausführe, auf der der Microsoft SQL Server 2012 Native Client installiert ist, wird „1“ (true) ausgegeben.

Derselbe Bat, den ich ausführe, wird von unserem Installationsprogramm ausgeführt (ruft genau dieselbe Bat-Datei auf), aber jetzt gibt er „0“ (falsch) aus.

Das lässt mich vermuten, dass es etwas mit dem Aufrufer des Skripts zu tun hat, aber ich habe keine Ahnung, was es sein könnte. Irgendwelche Ideen?

verwandte Informationen