2012-02-16 1 views
7

J'ai un script PS simple qui doit accepter un paramètre qui se trouve être un chemin d'accès à un répertoire. Je reçois ce chemin remis à moi et appeler le script ps comme suit:Powershell et un chemin en tant qu'argument délimité par des guillemets doubles

powershell.exe -ExecutionPolicy Bypass -F "C:\temp\ctest\logging test\postinstall.ps1" "C:\temp\ctest\logging test\" 

Je ne peux pas contrôler l'ajout du « \ » au chemin qui est le param à ce script, et il doit être entre guillemets doubles pour rendre compte de l'espace dans le chemin. Alors, ce que je le vent avec une variable dans mon script ps qui est la chaîne:

C:\temp\ctest\logging test"  <<-- error in path! with the double-quote char. :(

Ma question est simple, je l'espère, mais je ne peux pas trouver quelqu'un qui a résolu, encore. N'y a-t-il aucun moyen de dire à powershell de ne pas échapper à cette dernière double-citation dans ce scénario?

Nous vous remercions de votre temps et de votre formation.

Répondre

3

Le problème semble être uniquement lorsqu'il est appelé à partir de CMD. Dans votre script, vous pouvez le faire:

$args[0].TrimEnd('"') 

Il supprimera un double guillemet s'il existe.

Ou vous pourriez doubler la barre oblique inverse:

C:\>powershell.exe -f C:\echo.ps1 "C:\temp\ctest\logging test\\" 

Contenu de echo.ps1

Write-Host ('"{0}"' -f $args[0]) 
0

essayer comme ceci:

powershell.exe -ExecutionPolicy Bypass -F 'C:\temp\ctest\logging test\postinstall.ps1' 'C:\temp\ctest\logging test\' 
+0

qui retourne immédiatement PS avec: Traitement -File '' C: \ temp \ ctest \ Logging test \ postinstall.ps1 '' a échoué: le format du chemin donné n'est pas supporté. Spécifiez un chemin d'accès valide pour le paramètre -File. – joebalt

+0

- Editer: double citation ... –

+0

Citation simple tout produit: Traitement -File '' C: \ Temp \ cestest \ test de journalisation \ postinstall.ps1 '' a échoué: Le format du chemin donné n'est pas supporté. Spécifiez un chemin d'accès valide pour le paramètre -File. – joebalt

0

Avez-vous essayé un seul argument en citant votre votre appel?

+0

La simple citation du paramètre au script ps1 produit une erreur lorsque nous essayons de faire une commande dir sur ce paramètre dans le script ps: Get-ChildItem: Impossible de trouver le lecteur. Un lecteur portant le nom '' C '' n'existe pas. – joebalt

Questions connexes