[powershell] Comparer version installation distance

Comparer version installation distance [powershell] - Shell/Batch - Programmation

Marsh Posté le 13-08-2021 à 11:51:47    

Bonjour à tous,
 
Je prépare un script powershell pour télécharger et mettre à jour/installer Firefox sur mes serveurs.
 
Ci-dessous une partie su script qui compare la version de Firefox.(testé en local)

Code :
  1. $ff = Invoke-WebRequest  "https://product-details.mozilla.org/1.0/firefox_versions.json" | ConvertFrom-Json
  2. $ff.LATEST_FIREFOX_VERSION
  3. $firefox = (Get-Item (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe').'(Default)').VersionInfo
  4. $firefox_version_installe=$firefox.FileVersion
  5. $firefox_version_installe
  6. if($ff.LATEST_FIREFOX_VERSION -gt $firefox_version_installe) { echo " MAJ à installer"}  Elseif ($ff.LATEST_FIREFOX_VERSION -eq $firefox_version_installe) {echo "version identique"} else { echo "version supérieur à la source pas besoin de MAJ"}


 
 
 
Quelle commande doit être utilisé pour faire cette vérification à distance sur mes serveurs?
 
merci d'avance pour vos explications
 
razer69

Reply

Marsh Posté le 13-08-2021 à 11:51:47   

Reply

Marsh Posté le 18-08-2021 à 09:08:06    

Pour comparer des version je te conseil d'utiliser le type Version

Code :
  1. $ff = Invoke-WebRequest "https://product-details.mozilla.org/1.0/firefox_versions.json" | ConvertFrom-Json
  2. $ff.LATEST_FIREFOX_VERSION
  3. $firefox = (Get-Item (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe').'(Default)').VersionInfo
  4. $firefox_version_installe = $firefox.FileVersion
  5. $firefox_version_installe
  6. if([Version]$ff.LATEST_FIREFOX_VERSION -gt [Version]$firefox_version_installe) { echo " MAJ à installer"}  Elseif ([Version]$ff.LATEST_FIREFOX_VERSION -eq [Version]$firefox_version_installe) {echo "version identique"} else { echo "version supérieur à la source pas besoin de MAJ"}


 
Qu'as tu comme moyen pour déployer le script ? GPO, SCCM, autre ?
 
Pour une exécution à distance en directe il faut l'autoriser mais je ne connais pas exactement la manipulation
https://docs.microsoft.com/fr-fr/po [...] rshell-7.1
https://docs.microsoft.com/fr-fr/po [...] rshell-7.1

Reply

Marsh Posté le 19-08-2021 à 15:20:26    

Bonjour,
 
le script je vais exécuter moi même. Car dans ce script j'ai une fait une boucle qui liste mes serveurs.
 
Par contre je comprend pas  "utiliser le typer "Version"" ? tu entends pas quoi?

Reply

Marsh Posté le 19-08-2021 à 15:47:36    

Reply

Marsh Posté le 19-08-2021 à 17:46:23    

Re bonjour,
 
voici mon script qui fonctionne. :)

Code :
  1. $ff = Invoke-WebRequest  "https://product-details.mozilla.org/1.0/firefox_versions.json" | ConvertFrom-Json
  2. $derniereversionfirefox= $ff.LATEST_FIREFOX_VERSION
  3. $workdir = "\\srv-data\DATA_APPLICATION\A DEPLACER\"
  4. $destination = "$workdir\firefox-$derniereversionfirefox.msi"
  5. $source = "https://download.mozilla.org/?product=firefox-msi-latest-ssl&os=win64&lang=fr"
  6. If (Test-Path -Path $workdir -PathType Container)
  7. {
  8. Write-Host "$workdir already exists" -ForegroundColor Red
  9. if(Test-Path $destination){
  10.    Write-Host "Le fichier existe"
  11. }else{
  12.    Write-Host "Le fichier n'existe pas ! telechargement du fichier"
  13.    if (Get-Command 'Invoke-Webrequest')
  14. {
  15.      Invoke-WebRequest $source -OutFile $destination
  16. }
  17. else
  18. {
  19.     $WebClient = New-Object System.Net.WebClient
  20.     $webclient.DownloadFile($source, $destination)
  21. }
  22. }
  23. }
  24. ELSE
  25. { New-Item -Path $workdir  -ItemType directory }
  26. ######################
  27. for ($MonCompteur = 1; $MonCompteur -le 25; $MonCompteur++){
  28. #Write-Host "$MonCompteur"
  29. $nbrcaract = "$MonCompteur".Length
  30. #Write-Host "$nbrcaract"
  31. if ($nbrcaract -eq "1" )
  32. {
  33. $Numeroserveur = "0$MonCompteur"
  34. }
  35. else
  36. {
  37. $Numeroserveur = "$MonCompteur"
  38. }
  39. $firefox = Invoke-Command -ComputerName SRV-CTX-"$Numeroserveur" -ScriptBlock {(Get-Item (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe').'(Default)').VersionInfo}
  40. $firefox_version_installe=$firefox.FileVersion
  41. if($derniereversionfirefox -gt $firefox_version_installe) { echo "SRV-CTX-$Numeroserveur|Version Actuelle $firefox_version_installe | Nouvelle Version $derniereversionfirefox |  MAJ à installer"} 
  42. Elseif ($derniereversionfirefox -eq $firefox_version_installe) {echo "SRV-CTX-$Numeroserveur|Version Actuelle $firefox_version_installe | Nouvelle Version $derniereversionfirefox |  Identique Rien à faire"} else { echo "SRV-CTX-$Numeroserveur|Version Actuelle $firefox_version_installe | Nouvelle Version $derniereversionfirefox |  Destination superieur à la source  Rien à faire"}
  43. }


 
Par contre je bloque pour  lui dire de lancer l'installation. J'ai fais pas mal essai avec la commande Invoke-Command, mais j'ai un accès refusé.  
 
Faut-il rajouter une étape supplémentaire avant de lancer la commande install avec Invoke-Command ?
 
merci d'avance pour vos explications
 
razer69

Reply

Marsh Posté le 19-08-2021 à 17:56:23    

PS C:\Users\Moi> "9.0.0.0" -gt "10.0.0.0"
True
 
PS C:\Users\Moi> [version]"9.0.0.0" -gt [version]"10.0.0.0"
False

Reply

Marsh Posté le 20-08-2021 à 08:19:30    

Bonjour erickl128,
 
D'accord je ne connaissais pas

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed