Question
Lancer un script wsf depuis powershell avec admin
- smadon
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 20
- Remerciements reçus 0
Je suis un peu bloqué :-/
je voudrais lancer un script wsf avec powershell en prenant les droits admin et en élevant les droits (Windows 7)
La commande a lancé :
[code:1]
\"C:\Windows\System32\cscript.exe\" \"C:\Program Files (x86)\LocalGPO\GPOPack.wsf\" /Path:\"C:\Program Files (x86)\LocalGPO\"
[/code:1]
Voici mon script, mais j'ai toujours une erreur.
[code:1]
$Username = \"Admin\"
$Unsecure = \"SUPERPASS\" #Oui, je sais pour le password en clair :«»-)
$LocalGPOFolder = \"${env:«»ProgramFiles(x86)}\LocalGPO\"
$global:Credential = New-Object System.Management.Automation.PSCredential -ArgumentList @($Username,(ConvertTo-SecureString -String $Unsecure -AsPlainText -Force))
$Args2 = \"$LocalGPOFolder\GPOPack.wsf /Path:`\"$LocalGPOFolder`\"\"
$MyProg = \"Start-Process -verb runas -FilePath `\"C:\Windows\System32\cscript.exe`\" -WorkingDirectory `\"$LocalGPOFolder`\" -ArgumentList $Args2 \"
$argList = @('-noprofile', \" -command `\"&{ & '$MyProg ' -verb runas }`\" \"«»)
Start-Process -FilePath powershell.exe -Credential $Credential -RedirectStandardError \"C:\TEMP\temp2.txt\" -ArgumentList $argList
[/code:1]
J'ai une erreur quand je démarre le deuxième process.
Est ce la bonne solution pour lancer en admin et avec droit élevé un script. Y a t il une solution plus simple ?
D'avance merci pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- smadon
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 20
- Remerciements reçus 0
J'ai trouvé le problème, mais pas la solution.
J'ai simplifié la ligne, et mon problème vient bien des caractères spéciaux.
J'ai crée un simple script Wsf dans le répertoire Temp: C:\TEMP\LocalGPO\Test.wsf
[code:1]
<job id=\"Job1\">
<script language=\"VBScript\">
Set objNet = CreateObject(\"WScript.NetWork\"«»)
strInfo = \"User Name is \" & objNet.UserName & vbCRLF & _
\"Computer Name is \" & objNet.ComputerName & vbCRLF & _
\"Domain Name is \" & objNet.UserDomain
MsgBox strInfo
</script>
</job>
[/code:1]
Je le lance avec la commande
[code:1]
$Return = Start-Process powershell -Credential $Credential -RedirectStandardError \"C:\TEMP\temp3.txt\" -ArgumentList '-noprofile -command &{start-process cscript -verb runas -ArgumentList \"C:\TEMP\LocalGPO\Test.wsf\" }'
[/code:1]
Ca marche.
Si par contre, je bouge mon script dans C:\Program Files (x86)\LocalGPO
La ligne devient donc
[code:1]
$Return = Start-Process powershell -Credential $Credential -RedirectStandardError \"C:\TEMP\temp3.txt\" -ArgumentList '-noprofile -command &{start-process cscript -verb runas -ArgumentList \"C:\Program Files (x86)\LocalGPO\Test.wsf\" }'
[/code:1]
Et la, ca marche pas. Erreur :
The term 'x86' is not recognized
Bon, a la rigeur, je peux travailler dans le rep TEMP pour éviter le problème des (), mais mon script a besoins de parametre C:\TEMP\LocalGPO\GPOPack.wsf /Path:C:\TEMP\LocalGPO
et donc si je lance la commande :
[code:1]
$Return = Start-Process powershell -Credential $Credential -RedirectStandardError \"C:\TEMP\temp3.txt\" -ArgumentList '-noprofile -command &{start-process cscript -verb runas -ArgumentList \"C:\TEMP\LocalGPO\GPOPack.wsf /Path:C:\TEMP\LocalGPO\" }'
[/code:1]
J'ai une erreur avec le caractère spécial \
Start-Process : A positional parameter cannot be found that accepts argument '/
Path:C:\TEMP\LocalGPO'.
Donc la question :
Comment faire pour passer un caractere special dans les arguments ????
D'avance merci pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
smadon écrit:
regarde par exemple ici ,Hello,
Donc la question :
Comment faire pour passer un caractere special dans les arguments ????
Le caractère d’échappement Windows PowerShell est l’accent grave (`) . [Alt-Gr 7]
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
[code:1]$Return = Start-Process powershell -Credential $Credential -RedirectStandardError \"`\"C:\TEMP\temp3.txt`\"\" -ArgumentList '-noprofile -command &{start-process cscript -verb runas -ArgumentList \"`\"C:\Program Files (x86)\LocalGPO\Test.wsf`\"\" }'[/code:1]
pour mettre les parametres qui contiennent des espaces, entre guillemets !!!
smadon écrit:
J'ai une erreur quand je démarre le deuxième process.
pourrait tu nous donner le message d'erreur stp
Est ce la bonne solution pour lancer en admin et avec droit élevé un script. Y a t il une solution plus simple ?
c'est toi qui choisi la solution en fonction de ton environnement, par contre la methode ne sais pas mais a tu d'autre choix ?
Connexion ou Créer un compte pour participer à la conversation.
- smadon
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 20
- Remerciements reçus 0
merci pour la reponse, mais le caractere ` à pas l'air de marcher pour les /.
si j'ai :
[code:1]
$Return = Start-Process powershell -Credential $Credential -RedirectStandardError \"C:\TEMP\temp3.txt\" -ArgumentList '-noprofile -command &{start-process cscript -verb runas -ArgumentList \"C:\TEMP\LocalGPO\GPOPack.wsf `/Path:C:\TEMP\LocalGPO\" }'
[/code:1]
J'ai toujours une erreur avec `\
Start-Process : A positional parameter cannot be found that accepts argument '/Path:C:\TEMP\LocalGPO'.
Connexion ou Créer un compte pour participer à la conversation.
- smadon
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 20
- Remerciements reçus 0
J'ai creusé encore un peu, mais je n'ai pas trouvé la bonne solution en powershell.
J'ai essayé de créee une variable $Args2 qui contient les 2 parametres :
[code:1]
$Args2= {\"C:\TEMP\LocalGPO\GPOPack.wsf\" , \" `/Path:C:\TEMP\LocalGPO\" }
$Return = Start-Process powershell -Credential $Credential -RedirectStandardError \"C:\TEMP\temp3.txt\" -ArgumentList '-noprofile -command &{start-process cscript -verb runas -ArgumentList \"$Args2\" }'
[/code:1]
Mais $Args2 n'est pas vu par le deuxième start-process
Alors j'ai fait au plus simple, j'ai modifié le wsf pour ne plus avoir de parametre, et lui passé en dur
Par très jolie, mais ça a résolu mon pbs.
[code:1]
$Return = Start-Process powershell -Credential $Credential -RedirectStandardError \"C:\TEMP\temp3.txt\" -ArgumentList '-noprofile -command &{start-process cscript -verb runas -ArgumentList \"C:\TEMP\LocalGPO\MY-GPOPack.wsf\" }'
[/code:1]
Merci pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Lancer un script wsf depuis powershell avec admin