Question Lancer un EXE à distance depuis un script

Plus d'informations
il y a 11 ans 8 mois #17822 par Howard
Bonjour,

J'ai créé un script PS qui vérifie plusieurs choses sur les postes clients et qui installe le client SCCM sur ces postes. Si la version 2012 R2 n'est pas présente le script lance l'EXE.

Pour info, le script est lancé depuis un poste d'administration et non localement sur chaque poste.

Le script effectue les tâches suivantes:
1. Récupère la liste des postes depuis un fichier texte (Get-Content C: \Ordinateurs)

2. Copie le client SCCM du poste d'admin vers les postes clients sur C: \Temp

3. Si la version n'est pas 2012 R2, alors je lance
Invoke-Command -ComputerName $Ordinateurs -ScriptBlock {\\$_\C$\Temp\ccmsetup.exe /mp:MP01}


Mais cette étape génère une erreur stipulant que le chemin réseau n'est pas trouvé. Comment lancer l'installation à distance sous PowerShell svp en sachant que l'EXE est en local sur les postes ?

Comment lancer l'EXE sans l'UAC étant donné que la fonctionnalité est activée sur tous les postes ?

Merci<br><br>Message édité par: JH21, à: 11/07/14 11:56

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

Plus d'informations
il y a 11 ans 8 mois #17829 par Thibulaire
Si je comprend bien ta variable $_ contient le nom des Postes ?

as tu un double slash avant le nom des postes ? celà vient peut être de là...

Bon après moi je débute donc bon...<br><br>Message édité par: Thibulaire, à: 11/07/14 12:32

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

Plus d'informations
il y a 11 ans 8 mois #17832 par Laurent Dardenne
Peux-tu utiliser les balises codes ? L'étape 3 est illisible sans cela.
Est-ce la même discussion qu' ici ?

Le remoting PS (WinRM) est-il configuré sur tes machines clientes ?

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 8 mois #17836 par Howard
Oui c'est bien la même discussion mais entre temps j'ai découvert un dernier soucis : l'exe ne se lance pas sur les postes clients parce que l'UAC est activé.

Y a t-il un moyen sous PowerShell de contourner l'UAC ou d'exécuter la commande en mode RunAs ?

[code:1]
Get-Content C:\Ordinateurs.txt
Invoke-Command -ComputerName $Ordinateurs -ScriptBlock {\\$_\C$\Temp\ccmsetup.exe /mp:MP01}
[/code:1]<br><br>Message édité par: JH21, à: 11/07/14 13:22

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

Plus d'informations
il y a 11 ans 8 mois #17838 par Philippe
Bonjour JH21

je pense que tu a deux pb :
- pour que $_ fonctionne il faut etre dans une boucle (d'un pipe ici)
- le $ du lecteur C$ est interpreté par powershell comme une variable. il faut donc faire en sorte qu'il interprete pas le C$.

j'ai fait ce test qui fonctionne :
[code:1]'pc-test' | foreach {. $(\&quot;\\$_\\&quot;+'C$\Windows\System32\notepad.exe')}[/code:1]

dans ton cas ca devrait être :

[code:1]Get-Content C:\Ordinateurs.txt | foreach {
Invoke-Command -ComputerName $Ordinateurs -ScriptBlock {. $(\&quot;\\$_\\&quot;+'C$\Temp\ccmsetup.exe /mp:MP01')}
}
[/code:1]

dis moi si je me trompe ou pas !
bon courage pour la suite

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

Plus d'informations
il y a 11 ans 8 mois #17840 par Laurent Dardenne
6ratgus écrit:

- le $ du lecteur C$ est interprété par powershell comme une variable. il faut donc faire en sorte qu'il interprète pas le C$.

Ici pas du tout, sauf si le caractère suivant le dollar est un caractère autorisé dans un nom de variable.
[code:1]
$(\&quot;\\$_\\&quot;+\&quot;C$\Windows\System32_CRLF_otepad.exe\&quot;«»)
#ok
$c$=10
#parse error

#nommage étendu
${c$}=10
#ok
${c$}
#10
[/code:1]

Tutoriels PowerShell

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

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