Résolu Outil pour copier et lancer un fichier sur un poste
- Matthieu
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 36
- Remerciements reçus 0
il y a 2 ans 2 mois - il y a 2 ans 1 mois #33885
par Matthieu
Outil pour copier et lancer un fichier sur un poste a été créé par Matthieu
Bonjour,
Voilà je suis en train de développer un script en PowerShell pour copier un fichier d'installation sur un poste puis lancer l'installation.
Plus j'avance et plus j'ai l'impression de faire une usine à gaz.
Mes étapes :
1. copie du fichier de mon poste vers le poste distant sur c:\
2. ouverture d'une connexion à distance sur le poste
3. contrôle que le dossier c:\temp existe. Si pas de dossier, le créer
4. déplacement du fichier de c: vers c:\temp
5. exécution du fichier
Pour le moment, j'ai fait les 4 premiers points. J'ai des erreurs sur le point 4 car je dois relance deux fois le script pour que cela fonctionne comme s'il essayé de copier le fichier avant d'avoir créé le dossier temp. Mais de toute façon, idéalement, j'aurais préféré contrôler si le dossier temp existe sur le poste distant, le créer si ce n'est pas le cas et copier directement le fichier dedans sans devoir passer au préalable par une copie sur le c: mais ça ne semblait pas fonctionner. Je m'y prends sans doute mal... Voilà mon code :
Voilà je suis en train de développer un script en PowerShell pour copier un fichier d'installation sur un poste puis lancer l'installation.
Plus j'avance et plus j'ai l'impression de faire une usine à gaz.
Mes étapes :
1. copie du fichier de mon poste vers le poste distant sur c:\
2. ouverture d'une connexion à distance sur le poste
3. contrôle que le dossier c:\temp existe. Si pas de dossier, le créer
4. déplacement du fichier de c: vers c:\temp
5. exécution du fichier
Pour le moment, j'ai fait les 4 premiers points. J'ai des erreurs sur le point 4 car je dois relance deux fois le script pour que cela fonctionne comme s'il essayé de copier le fichier avant d'avoir créé le dossier temp. Mais de toute façon, idéalement, j'aurais préféré contrôler si le dossier temp existe sur le poste distant, le créer si ce n'est pas le cas et copier directement le fichier dedans sans devoir passer au préalable par une copie sur le c: mais ça ne semblait pas fonctionner. Je m'y prends sans doute mal... Voilà mon code :
# Déclaration du chemin du fichier sur le poste local
$localFilePath = "C:\temp\PROTECT_Installer_x64_fr_FR.exe"
# Déclaration des détails du poste distant
$remoteComputer = "192.168.254.230"
$remoteFolderPath = "\\$remoteComputer\c$"
#Copie du fichier à la racine du poste distant
Copy-Item -Path $localFilePath -Destination $remoteFolderPath
#Connexion au poste distant
Enter-PSSession -ComputerName $remoteComputer -Credential "IT-CONNECT\Administrateur"
# Spécifier les chemins des fichiers et dossiers
$sourceFilePath = "C:\PROTECT_Installer_x64_fr_FR.exe"
$destinationFolderPath = "C:\temp"
# Vérifier si le dossier de destination existe, sinon le créer
if (-not (Test-Path $destinationFolderPath -PathType Container)) {
New-Item -Path $destinationFolderPath -ItemType Directory | Out-Null
Write-Host "Le dossier $destinationFolderPath a été créé."
} else {
Write-Host "Le dossier $destinationFolderPath existe déjà."
}
# Copier le fichier vers le dossier de destination
Move-Item -Path $sourceFilePath -Destination $destinationFolderPath
Dernière édition: il y a 2 ans 1 mois par Matthieu.
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 146
- Remerciements reçus 22
il y a 2 ans 2 mois #33886
par Fabien
Réponse de Fabien sur le sujet Outil pour copier et lancer un fichier sur un poste
Bonjour Matthieu,
Effectivement, pour le simplifier, tu peux copier le fichier directement à l'emplacement prévu et vérifier son existence avant.
Ensuite, il te suffit d'exécuter le fichier à distance.
Voici un exemple :
Attention sur l'application que tu lances à distance.
Le mieux est un .MSI avec des arguments pour ne pas l'installer en mode interface graphique car tu n'as pas le retour graphique en Powershell à distance.
Fabien
Effectivement, pour le simplifier, tu peux copier le fichier directement à l'emplacement prévu et vérifier son existence avant.
Ensuite, il te suffit d'exécuter le fichier à distance.
Voici un exemple :
# Déclaration du chemin du fichier sur le poste local
$FilePath = "C:\Temp\Wireshark.exe"
# Déclaration des détails du poste distant
$remoteComputer = "PCHOME01"
$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\Wireshark.exe"}
Attention sur l'application que tu lances à distance.
Le mieux est un .MSI avec des arguments pour ne pas l'installer en mode interface graphique car tu n'as pas le retour graphique en Powershell à distance.
Fabien
Les utilisateur(s) suivant ont remercié: Matthieu
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 2 ans 2 mois #33891
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 Outil pour copier et lancer un fichier sur un poste
Bonjour Matthieu,
Effectivement, comme le souligne très justement Fabien, PowerShell ne te renverra pas de retour graphique si tu lances un exe à distance.
L'exécution d'Exe est faite pour des utilitaires ligne de commande.
Par ailleurs, je ne comprends pas à quoi te sert la commande Enter-PSSession dans ton script. En effet, celle-ci t'ouvres une session interactive sur une machine distante. Tu ne pourras donc juste taper des commandes, rien de plus.
Il faut à mon avis que tu fasses toutes tes actions distantes à travers une Session WinRM et avec la commande Invoke-Command.
De plus, sache qu'il est possible de copier des fichiers (avec Copy-Item) à travers une session WinRM. Ce qui parfois peut te sauver la vie si le protocole SMB n'est pas autorisé.
Arnaud
Effectivement, comme le souligne très justement Fabien, PowerShell ne te renverra pas de retour graphique si tu lances un exe à distance.
L'exécution d'Exe est faite pour des utilitaires ligne de commande.
Par ailleurs, je ne comprends pas à quoi te sert la commande Enter-PSSession dans ton script. En effet, celle-ci t'ouvres une session interactive sur une machine distante. Tu ne pourras donc juste taper des commandes, rien de plus.
Il faut à mon avis que tu fasses toutes tes actions distantes à travers une Session WinRM et avec la commande Invoke-Command.
De plus, sache qu'il est possible de copier des fichiers (avec Copy-Item) à travers une session WinRM. Ce qui parfois peut te sauver la vie si le protocole SMB n'est pas autorisé.
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 ?
Connexion ou Créer un compte pour participer à la conversation.
- Matthieu
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 36
- Remerciements reçus 0
il y a 2 ans 2 mois #33892
par Matthieu
Réponse de Matthieu sur le sujet Outil pour copier et lancer un fichier sur un poste
top merci
Connexion ou Créer un compte pour participer à la conversation.
- Matthieu
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 36
- Remerciements reçus 0
il y a 2 ans 2 mois #33893
par Matthieu
Réponse de Matthieu sur le sujet Outil pour copier et lancer un fichier sur un poste
J'avais fait avec la commande Invoke-Command mais j'avais une erreur WMI... je ne sais pas pourquoi tout semblait ok c'est pour contourner le problème que je faisais Enter-PSSession.
Oui pour le .exe je vais mettre un msi là c'était pour tester. Après il faudra que je fasse une petite interface graphique pour tout ça et modifier un peu mon code pour ne pas avoir certaines informations en dur.
Oui pour le .exe je vais mettre un msi là c'était pour tester. Après il faudra que je fasse une petite interface graphique pour tout ça et modifier un peu mon code pour ne pas avoir certaines informations en dur.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 2 ans 2 mois #33897
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 Outil pour copier et lancer un fichier sur un poste
Ok. Tiens nous au courant de la suite !
Bizarre pour ton erreur WMI, il n'y a pas de raison...
Bizarre pour ton erreur WMI, il n'y a pas de raison...
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.
Temps de génération de la page : 0.098 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les initiés
- Outil pour copier et lancer un fichier sur un poste