Question Insérer une fonction qui contrôle si le logiciel est déjà installé

Plus d'informations
il y a 1 an 6 mois #32593 par THERON
Bonjour, nous souhaitons déployer un logiciel à l'aide de ce script via une GPO.
Nous souhaiterions insérer dans le script une fonction qui contrôlerait si le logiciel est déjà installé avant de réaliser l'installation et qui par conséquent ne l'installerait pas si c'est déjà le cas.
Merci pour votre aide

# --== Configuration ==-- #
###########################
$S1_MSI = "" # La source du programme d'installation MSI
$SiteToken = "" # Remplacez-le par votre TOKEN
# --== Initial Setup ==-- #
###########################
$Host.UI.RawUI.BackgroundColor = 'Black';
Clear-Host;
# --== Function Definition ==-- #
#################################
function Print-Middle( $Message, $Color = "White" )
{
    Write-Host ( " " * [System.Math]::Floor( ( [System.Console]::BufferWidth / 2 ) - ( $Message.Length / 2 ) ) ) -NoNewline;
    Write-Host -ForegroundColor $Color $Message;
}
# --== Script Start ==-- #
##########################
# Print Script Title
$Padding = ("=" * [System.Console]::BufferWidth);
Write-Host -ForegroundColor "Red" $Padding -NoNewline;
Print-Middle -Color "Red" "--== SentinelOne Installer ==--";
Print-Middle -Color "DarkRed" "PowerShell v$($PSVersionTable.PSVersion.Major).$($PSVersionTable.PSVersion.Minor)";
Write-Host -ForegroundColor "Red" $Padding;
Start-Process -FilePath $S1_MSI -ArgumentList "SITE_TOKEN=$($SiteToken)", "QUIET", "/NORESTART" -Wait;

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 6 mois #32594 par Laurent Dardenne
Salut,
>> une fonction qui contrôlerait si le logiciel est déjà installé
Cela dépend de ton packaging , soit par clé de registre(support.microfocus.com/kb/doc.php?id=7018219) soit par présence de fichiers, tu as aussi Get-Command si le répertoire du soft est dans le %path%.
Ou encore ceci : (www.sonicwall.com/support/knowledge-base...ent/210211074921170/)

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 6 mois #32595 par Bruce
Bonjour,

Voici une fonction que j'utilise sur un outil des déploiement perso:

Function Get-InstalledApps

        if ([IntPtr]::Size -eq 4) # Version 32 bits
        {
            $Regpath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
        } Else  # Version 64 bits
        {
            $Regpath = @(
            'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'
            'HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'
            )
        }
        Get-ItemProperty $Regpath | .{Process{If($_.DisplayName -and $_.UninstallString) { $_ } }} | Select DisplayName, Publisher, InstallDate, DisplayVersion, UninstallString |Sort DisplayName
}

Appel de la fonction:
$isInstalled = Get-InstalledApps | Where {$_.DisplayName -like "*$nom*"}
    if ($isInstalled)
    {
        $ver = $isInstalled.DisplayVersion
        Show-MsgBox -Prompt "La version $ver de $nom est déjà installée" -Title "Application existante !" -Icon Exclamation -BoxType OKOnly
    }

Si ça peut aider

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 an 6 mois - il y a 1 an 6 mois #32617 par ericlm128
J'ajouterai au message de @Laurent Dardenne que tu peux aussi faire une détection via l'objet Windows.Installer (base MSI).
Pour ma part nous utilisons principalement cette méthode sinon via clé de registre (un truc un peu comme propose Bruce) si ce n'est pas un MSI.

@bruce
Que fait ceci ? C'est un alias de quelque chose ?
Get-ItemProperty $Regpath | .{Process{If($_.DisplayName -and $_.UninstallString) { $_ } }} | Select DisplayName, Publisher, InstallDate, DisplayVersion, UninstallString |Sort DisplayName
C'est un espèce de Where-Object déguisé en fonction de pipeline ?
Dernière édition: il y a 1 an 6 mois par ericlm128.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.072 secondes
Propulsé par Kunena