Question Fichier MSI qui ne se lance pas sur le poste distant
- Matthieu
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 34
- Remerciements reçus 0
il y a 8 mois 1 semaine - il y a 8 mois 1 semaine #33934
par Matthieu
Fichier MSI qui ne se lance pas sur le poste distant a été créé par Matthieu
Rebonjour,
Je n'ai pas de message d'erreur mais mon fichier msi ne se lance pas sur mon poste distant...
[/code]
Merci d'avance pour votre aide.
Je n'ai pas de message d'erreur mais mon fichier msi ne se lance pas sur mon poste distant...
[code]# Importation de la librairie
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# Création de l'objet de formulaire
$form = New-Object System.Windows.Forms.Form
$form.Text = "Télédistribution"
$form.Size = New-Object System.Drawing.Size(600,230)
$form.StartPosition = "CenterScreen"
# Champ pour saisir le nom de la machine
$labelMachineName = New-Object System.Windows.Forms.Label
$labelMachineName.Text = "Nom de la machine ou adresse IP (*) :"
$labelMachineName.Location = New-Object System.Drawing.Point(10,20)
$labelMachineName.AutoSize="$true"
$form.Controls.Add($labelMachineName)
$textboxMachineName = New-Object System.Windows.Forms.TextBox
$textboxMachineName.Location = New-Object System.Drawing.Point(210,15)
$textboxMachineName.Width=360
$form.Controls.Add($textboxMachineName)
# Bouton pour parcourir et sélectionner le fichier MSI
$labelFilePath = New-Object System.Windows.Forms.Label
$labelFilePath.Text = "Fichier MSI (*) :"
$labelFilePath.Location = New-Object System.Drawing.Point(10,50)
$labelFilePath.AutoSize="$true"
$form.Controls.Add($labelFilePath)
$buttonBrowse = New-Object System.Windows.Forms.Button
$buttonBrowse.Text = "Parcourir"
$buttonBrowse.Location = New-Object System.Drawing.Point(210,45)
$buttonBrowse.Add_Click({
$openFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$openFileDialog.Filter = "Fichiers MSI (*.msi)|*.msi|Tous les fichiers (*.*)|*.*"
$openFileDialog.Title = "Sélectionnez un fichier MSI"
if ($openFileDialog.ShowDialog() -eq 'OK') {
$textboxFilePath.Text = $openFileDialog.FileName
}
})
$form.Controls.Add($buttonBrowse)
$textboxFilePath = New-Object System.Windows.Forms.TextBox
$textboxFilePath.Location = New-Object System.Drawing.Point(210,75)
$textboxFilePath.Width=360
$textboxFilePath.ReadOnly = $true
$form.Controls.Add($textboxFilePath)
# Champ pour saisir des arguments du fichier MSI
$labelArgumentsMSI = New-Object System.Windows.Forms.Label
$labelArgumentsMSI.Text = "Arguments du fichier MSI:"
$labelArgumentsMSI.Location = New-Object System.Drawing.Point(10,110)
$labelArgumentsMSI.AutoSize="$True"
$form.Controls.Add($labelArgumentsMSI)
$textboxArgumentsMSI = New-Object System.Windows.Forms.TextBox
$textboxArgumentsMSI.Location = New-Object System.Drawing.Point(210,105)
$textboxArgumentsMSI.Width=360
$form.Controls.Add($textboxArgumentsMSI)
# Bouton OK pour valider et fermer le formulaire
$buttonOK = New-Object System.Windows.Forms.Button
$buttonOK.Text = "Lancer la télédistribution"
$buttonOK.Location = New-Object System.Drawing.Point(410,145)
$buttonOK.AutoSize="$true"
$buttonOK.Add_Click({
$Script:RemoteComputer = $textboxMachineName.Text
$Script:FilePath = $textboxFilePath.Text
$Script:argumentsMSI = $textboxArgumentsMSI.Text
$form.Close()
})
$form.Controls.Add($buttonOK)
# Affichage du formulaire
$form.ShowDialog() | Out-Null
# Vérifier si la liste des TrustedHosts existe
if (-not (Test-Path WSMan:\localhost\Client\TrustedHosts)) {
# Si elle n'existe pas, la créer avec la machine $Script:RemoteComputer
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $Script:RemoteComputer -Force
} else {
# Si elle existe, vérifier si elle est vide
$currentTrustedHosts = (Get-Item WSMan:\localhost\Client\TrustedHosts).Value
if (-not $currentTrustedHosts) {
# Si elle est vide, ajouter la machine $Script:RemoteComputer
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $Script:RemoteComputer -Force
} else {
# Si elle n'est pas vide, vérifier si la machine $Script:RemoteComputer existe
$hostsArray = $currentTrustedHosts -split ','
if ($Script:RemoteComputer -notin $hostsArray) {
# Si elle n'existe pas, ajouter la machine $Script:RemoteComputer à la suite des autres machines
$newTrustedHosts = $currentTrustedHosts + "," + $Script:RemoteComputer
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $newTrustedHosts -Force
}
# Si elle existe, ne rien faire
}
}
# Déclaration des détails du poste distant
$RemoteFolderPath = "\\$Script:RemoteComputer\c`$\Temp\"
# Vérifier si le dossier de destination existe, sinon le créer
if (-not (Test-Path $RemoteFolderPath -PathType Container)) {
New-Item -Path $RemoteFolderPath -ItemType Directory | Out-Null
Write-Host "Le dossier $RemoteFolderPath a été créé."
} else {
Write-Host "Le dossier $RemoteFolderPath existe déjà."
}
# Copie du fichier à l'emplacement du poste distant
Copy-Item -Path $FilePath -Destination $RemoteFolderPath
# Lancement de l'installation
Invoke-Command -ComputerName $Script:RemoteComputer -ScriptBlock {
# Récupéreration du nom du fichier sans le chemin
$NomFichier = [System.IO.Path]::GetFileName($textboxFilePath.Text)
# Chemin du fichier MSI sur le serveur distant
$msiPath = "C:\temp\" + $NomFichier
$msiWithArguments = $msiPath + ' ' + $Script:argumentsMSI
# Lancer l'installation du fichier MSI
Start-Process -FilePath "msiexec.exe" -ArgumentList "/i $msiWithArguments" -Wait
}
# Suppression du site dans les TrustedHosts de WinRM
$listeTrustedHosts = (Get-Item WSMan:\localhost\Client\TrustedHosts).Value
$listeMiseAJour = $listeTrustedHosts -replace "$Script:RemoteComputer,", "" -replace ",$Script:RemoteComputer", "" -replace "$Script:RemoteComputer", ""
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $listeMiseAJour -Force
Merci d'avance pour votre aide.
Dernière édition: il y a 8 mois 1 semaine par Matthieu.
Connexion ou Créer un compte pour participer à la conversation.
- Matthieu
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 34
- Remerciements reçus 0
il y a 8 mois 1 semaine #33937
par Matthieu
Réponse de Matthieu sur le sujet Fichier MSI qui ne se lance pas sur le poste distant
Personne ?
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 140
- Remerciements reçus 20
il y a 8 mois 4 jours #33958
par Fabien
Réponse de Fabien sur le sujet Fichier MSI qui ne se lance pas sur le poste distant
Bonjour Matthieu,
Pour lancer un fichier .MSI à distante il faut spécifier qu’il n’y a pas d’interface utilisateur de base pendant le processus d’installation.
Pour effectuer cette installation sans interface graphique, il faut ajouter un argument pour lancer le .MSI :
Fabien
Pour lancer un fichier .MSI à distante il faut spécifier qu’il n’y a pas d’interface utilisateur de base pendant le processus d’installation.
Pour effectuer cette installation sans interface graphique, il faut ajouter un argument pour lancer le .MSI :
/qb!
Fabien
Connexion ou Créer un compte pour participer à la conversation.
- Frédéric FOUCAN
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 1
- Remerciements reçus 0
il y a 5 mois 1 semaine - il y a 5 mois 1 semaine #34214
par Frédéric FOUCAN
Réponse de Frédéric FOUCAN sur le sujet Fichier MSI qui ne se lance pas sur le poste distant
Salut,
Est-ce qu'il s'agit d'un msi destiné à l'installation d'un site web dans IIS ?
Si c'est le cas, il est possible qu'il manque des pré-requis d'installation Windows, pour que le msi se lanse sur la machine distante (ex. :. Net Framework 3.5 ou compatibilité IIS 6, etc.).
Frédéric
Est-ce qu'il s'agit d'un msi destiné à l'installation d'un site web dans IIS ?
Si c'est le cas, il est possible qu'il manque des pré-requis d'installation Windows, pour que le msi se lanse sur la machine distante (ex. :. Net Framework 3.5 ou compatibilité IIS 6, etc.).
Frédéric
Dernière édition: il y a 5 mois 1 semaine par Frédéric FOUCAN.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 5 mois 1 semaine - il y a 5 mois 1 semaine #34221
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Fichier MSI qui ne se lance pas sur le poste distant
Hello Matthieu,
Peut-être as tu déjà résolu ton problème car il commence à dater un peu...?
Ton souci vient du faire que tu cherches à adresser une variable ($textboxFilePath) à l'intérieur de ton scriptblock. Pour que ça fonctionne, il faut que tu la préfixe par $using:. Soit dans ton cas $using:textboxFilePath. C'est une astuce, pas très connue mais qui est très efficace.
Bon après, ce n'est pas dit que ton MSI va s'installer correctement, car comme le soulignaient Fabien et Frédéric il y a peut-être d'autres problèmes. Mais en tout cas, de manière certaine, dans l'état actuel, ta variable $textboxFilePath sans $using: vaut null.
Arnaud
Peut-être as tu déjà résolu ton problème car il commence à dater un peu...?
Ton souci vient du faire que tu cherches à adresser une variable ($textboxFilePath) à l'intérieur de ton scriptblock. Pour que ça fonctionne, il faut que tu la préfixe par $using:. Soit dans ton cas $using:textboxFilePath. C'est une astuce, pas très connue mais qui est très efficace.
Bon après, ce n'est pas dit que ton MSI va s'installer correctement, car comme le soulignaient Fabien et Frédéric il y a peut-être d'autres problèmes. Mais en tout cas, de manière certaine, dans l'état actuel, ta variable $textboxFilePath sans $using: vaut null.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Dernière édition: il y a 5 mois 1 semaine par Arnaud Petitjean.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.112 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- Fichier MSI qui ne se lance pas sur le poste distant