- forum
- PowerShell
- Entraide pour les débutants
- Insérer une fonction qui contrôle si le logiciel est déjà installé
Question
Insérer une fonction qui contrôle si le logiciel est déjà installé
- THERON
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 2 ans 3 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;
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 2 ans 3 mois #32594
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Insérer une fonction qui contrôle si le logiciel est déjà installé
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/)
>> 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.
- Bruce
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 2 ans 3 mois #32595
par Bruce
Réponse de Bruce sur le sujet Insérer une fonction qui contrôle si le logiciel est déjà installé
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
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.
- ericlm128
- Visiteur
il y a 2 ans 2 mois - il y a 2 ans 2 mois #32617
par ericlm128
Réponse de ericlm128 sur le sujet Insérer une fonction qui contrôle si le logiciel est déjà installé
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 ?
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 2 ans 2 mois par ericlm128.
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les débutants
- Insérer une fonction qui contrôle si le logiciel est déjà installé
Temps de génération de la page : 0.134 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Insérer une fonction qui contrôle si le logiciel est déjà installé