3 votes

problème avec les chaînes de caractères dans script powershell sudo

Je fais un script comme sudo, l'idée est que la fonction sudo va exécuter un scriptblock en élévation. J'ai des problèmes avec les variables strings, que je passe dans ce scriptblock. C'est comme si les doubles guillemets disparaissaient. Quel est le problème avec mon approche ? Voici le code.

function sud([ScriptBlock]$SomeCode){
$here = Get-Location;
Start-Process Powershell -Verb Runas -ArgumentList "-command &{cd $here; $SomeCode}" 
}

et je veux exécuter des commandes comme celle-ci :

$var ="Path"
$newpath = $env:path + ";c:\somedir"
$target = "Machine"
sud -somecode { [Environment]::SetEnvironmentVariable($var, $newpath, $target)}

à des fins de test, on peut ajouter le paramètre -noexit à la liste d'arguments

Start-Process Powershell -Verb Runas -ArgumentList "-noexit","-command &{cd $here; $SomeCode}"

2voto

Nick Points 256

Essayez d'envelopper la commande dans des points simples et de déplacer le guillemet double devant la commande réelle. C'est ce que je fais dans mon environnement.

Start-Process Powershell -Verb Runas -ArgumentList `-command "&{cd $here; $SomeCode}"`

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X