Question Lancer un script wsf depuis powershell avec admin

Plus d'informations
il y a 12 ans 6 mois #15976 par smadon
Hello,

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.

Plus d'informations
il y a 12 ans 6 mois #15977 par smadon
Hello,

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.

Plus d'informations
il y a 12 ans 6 mois #15978 par Philippe
bon jour smadon

smadon écrit:

Hello,

Donc la question :
Comment faire pour passer un caractere special dans les arguments ????

regarde par exemple ici ,
Le caractère d’échappement Windows PowerShell est l’accent grave (`) . [Alt-Gr 7]

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

Plus d'informations
il y a 12 ans 6 mois #15980 par Philippe
j'ai été un peu court dans ma reponse mais tu a compris que tu devait faire comme ca :

[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.

Plus d'informations
il y a 12 ans 6 mois #15988 par smadon
Hello,


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.

Plus d'informations
il y a 12 ans 5 mois #16021 par smadon
Hello,

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.

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