- Mitglied seit
- 23. Juli 2018
- Beiträge
- 1
Hallo zusammen,
da ja das direkt Verteilen mit der GPO "Computerrichtlinien -> Richtlinien -> Softwareeinstellungen -> Softwareinstallation" nicht so recht klappen will, habe ich ein PowerShell-Skript geschrieben. Das Funktioniert soweit ganz gut, allerdings habe ich Probleme mit der Versionsprüfung. Zur Zeit muss ich es so machen, das ich ein zusätzliches Skript ausführen muss, das aus der 3CXWin8Phone.exe - auf einem lokalen PC - die Versionsnummer ausliest und diese in einer Textdatei auf einem Netzwerkpfad speichert.
Ist halt die Frage ob man die Versionsnummer noch irgendwo anders her bekommt. Am besten natürlich mit PowerShell Befehlen.
Hier mal die Skripte:
Startup-Skript:
#Pfad auf dem Fileserver zum MSInstaller
$3CXNetPath = "\\Netzwerkpfad\Software\3CX"
#Name des MSInstallers
$3CXMSI = "3CX_001.MSI"
#Kopiere MSinstaller zur Installation auf lokalen Pfad (Ohne "\" am Ende)
$3CXPath = "C:"
#Localer Pfad zur 3CXWin8Phone.exe zur Prüfung (vorhandensein) und Versionsprüfung
$3CXLocalApp = "C:\ProgramData\3CXPhone for Windows\PhoneApp\3CXWin8Phone.exe"
#Versionsvariable
$3CXVer = get-content -path "$3CXNetPath\3CX_version.txt"
copy "$3CXNetPath\$3CXMSI" "$3CXpath\"
IF (!(Test-Path "$3CXLocalApp"))
{
msiexec /i "$3CXPath\$3CXMSI" /quiet /qn /lv C:\3CX_Install.txt
}
ELSE
{
$current3CXVer = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$3CXLocalApp").FileVersion
IF (Compare-Object $3CXVer $current3CXVer)
{
msiexec /x "$3CXPath\$3CXMSI" /quiet /qn /lv C:\3CX_Uninstall.txt
msiexec /i "$3CXPath\$3CXMSI" /quiet /qn /lv C:\3CX_Update.txt
}
}
|
Hier das "Skript" das ich abschaffen will:
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\ProgramData\3CXPhone for Windows\PhoneApp\3CXWin8Phone.exe").FileVersion | Set-Content "\\srv-fs1\Company\Zwischenablage\EDV\Software\3CX\3CX_version.txt"
Und ja, die MSI-Datei muss vorher lokal gespeichert werden. Ausführen direkt vom Netzwerkpfad ist nicht so prickelnd.
da ja das direkt Verteilen mit der GPO "Computerrichtlinien -> Richtlinien -> Softwareeinstellungen -> Softwareinstallation" nicht so recht klappen will, habe ich ein PowerShell-Skript geschrieben. Das Funktioniert soweit ganz gut, allerdings habe ich Probleme mit der Versionsprüfung. Zur Zeit muss ich es so machen, das ich ein zusätzliches Skript ausführen muss, das aus der 3CXWin8Phone.exe - auf einem lokalen PC - die Versionsnummer ausliest und diese in einer Textdatei auf einem Netzwerkpfad speichert.
Ist halt die Frage ob man die Versionsnummer noch irgendwo anders her bekommt. Am besten natürlich mit PowerShell Befehlen.
Hier mal die Skripte:
Startup-Skript:
#Pfad auf dem Fileserver zum MSInstaller
$3CXNetPath = "\\Netzwerkpfad\Software\3CX"
#Name des MSInstallers
$3CXMSI = "3CX_001.MSI"
#Kopiere MSinstaller zur Installation auf lokalen Pfad (Ohne "\" am Ende)
$3CXPath = "C:"
#Localer Pfad zur 3CXWin8Phone.exe zur Prüfung (vorhandensein) und Versionsprüfung
$3CXLocalApp = "C:\ProgramData\3CXPhone for Windows\PhoneApp\3CXWin8Phone.exe"
#Versionsvariable
$3CXVer = get-content -path "$3CXNetPath\3CX_version.txt"
copy "$3CXNetPath\$3CXMSI" "$3CXpath\"
IF (!(Test-Path "$3CXLocalApp"))
{
msiexec /i "$3CXPath\$3CXMSI" /quiet /qn /lv C:\3CX_Install.txt
}
ELSE
{
$current3CXVer = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$3CXLocalApp").FileVersion
IF (Compare-Object $3CXVer $current3CXVer)
{
msiexec /x "$3CXPath\$3CXMSI" /quiet /qn /lv C:\3CX_Uninstall.txt
msiexec /i "$3CXPath\$3CXMSI" /quiet /qn /lv C:\3CX_Update.txt
}
}
|
Hier das "Skript" das ich abschaffen will:
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\ProgramData\3CXPhone for Windows\PhoneApp\3CXWin8Phone.exe").FileVersion | Set-Content "\\srv-fs1\Company\Zwischenablage\EDV\Software\3CX\3CX_version.txt"
Und ja, die MSI-Datei muss vorher lokal gespeichert werden. Ausführen direkt vom Netzwerkpfad ist nicht so prickelnd.