Résolu Outil pour copier et lancer un fichier sur un poste

Plus d'informations
il y a 7 mois 3 semaines - il y a 7 mois 3 semaines #33901 par Matthieu
Bonjour,

Je bloque sur l'installation de mon MSI...
# Déclaration du chemin du fichier sur le poste local
$FilePath = "C:\Temp\efsw_nt64.msi"

# Déclaration des détails du poste distant
$remoteComputer = "192.168.254.230"
$remoteFolderPath = "\\$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


#Execute le fichier sur le poste distant
Invoke-Command -ComputerName $remoteComputer -Credential $cred -ScriptBlock {Start-Process -FilePath "C:\Temp\efsw_nt64.msi /qn /i"}

Impossible d’exécuter cette commande en raison de l’erreur : Le fichier spécifié est introuvable.
    + CategoryInfo          : InvalidOperation : (: ) [Start-Process], InvalidOperationException   
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
    + PSComputerName        : 192.168.254.230


OU
# Déclaration du chemin du fichier sur le poste local
$FilePath = "C:\Temp\efsw_nt64.msi"

# Déclaration des détails du poste distant
$remoteComputer = "192.168.254.230"
$remoteFolderPath = "\\$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

$argumentsMSI = "/qn /i $FilePath"

# Lancement de msiexec sur le serveur distant via Start-Process
Invoke-Command -ComputerName $remoteComputer -Credential $cred -ScriptBlock {
    param($argumentsMSI)
    Start-Process -FilePath "msiexec.exe" -ArgumentList $argumentsMSI -Wait
} -ArgumentList $argumentsMSI

[192.168.254.230] La connexion au serveur distant 192.168.254.230 a échoué avec le message d’erreur suivant: Accès refusé. Pour plus d'informations, voir la rubrique d'aide 
about_Remote_Troubleshooting.
    + CategoryInfo          : OpenError: (192.168.254.230:String) [], PSRemotingTransportException
    + FullyQualifiedErrorId : AccessDenied,PSSessionStateBroken
Dernière édition: il y a 7 mois 3 semaines par Matthieu.

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

Plus d'informations
il y a 7 mois 3 semaines #33902 par Matthieu
Non c'est bon je n'avais pas lancé Powershell ISE en admin quand j'avais relancé.

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

Plus d'informations
il y a 7 mois 3 semaines #33909 par Arnaud Petitjean
Parfait alors ! ;-)

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 ?

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

Plus d'informations
il y a 7 mois 3 semaines - il y a 7 mois 3 semaines #33913 par Matthieu
Bon j'ai pas mal avancé mais j'ai un soucis à la fin de mon script. Mes variables $RemoteComputer, $FilePath et $argumentsMSI sont vides...
Pourtant, dans mon script j'ai bien mis :
    $RemoteComputer = $textboxMachineName.Text
    $FilePath = $textboxFilePath.Text
    $argumentsMSI = $textboxArgumentsMSI.Text


et mes variables $textboxMachineName.Text, $textboxFilePath.Text et $textboxArgumentsMSI.Text sont bien renseignées avec les valeurs que j'ai saisies dans l'interface graphique...
# 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(190,15)
$textboxMachineName.Width=380
$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(190,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(190,75)
$textboxFilePath.Width=380
$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(190,105)
$textboxArgumentsMSI.Width=380
$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({
    $RemoteComputer = $textboxMachineName.Text
    $FilePath = $textboxFilePath.Text
    $argumentsMSI = $textboxArgumentsMSI.Text
    $form.Close()
})
$form.Controls.Add($buttonOK)

# Affichage du formulaire
$form.ShowDialog()
Dernière édition: il y a 7 mois 3 semaines par Matthieu.

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

Plus d'informations
il y a 7 mois 3 semaines #33918 par Arnaud Petitjean
Comme il s'agit d'un nouveau sujet, pourrais-tu créer STP un nouveau Post ?

Merci

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 ?

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

Plus d'informations
il y a 7 mois 3 semaines #33921 par Matthieu
C'est toujours le même sujet, il s'agit bien du script de mon outil pour copier et lancer un fichier sur un poste.
Petite précision à la fin de mon script dans ma fenêtre PowerShell ISE cela met Cancel une fois que j'ai cliqué sur mon bouton de validation.

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

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