2013-05-09 14 views
5

Próbuję wywołać skrypt Powershell w cmd.exe, a skrypt znajduje się w lokalizacji, która wygląda następująco: c: Data \ foo - bar \ location-1 \ ShellScript.ps1Wykonywanie skryptu Powershell w CMD.EXE z lokalizacji z "Nielegalne znaki w ścieżce"

Kiedy wywołuję ten skrypt, próbowałem używać pojedynczych i podwójnych cytatów na ścieżce bez powodzenia.

PowerShell.exe -File "c:\Data\foo - bar\location-1\ShellScript.ps1" Arg1 Arg2 

Z tego co czytałem Przypuszczałem, że wyżej będzie działać, ale to nie działa ani nie apostrofów.

Doceniam wszelkie pomysły.

Dzięki * Edytuj * Błąd na mojej przykładowej ścieżce. Przepraszam.

+1

co najmniej, trzeba będzie umieścić w brakującej \ tak: C: \ Data \ foo - bar \ Location- 1 \ ShellScript.ps1 – EBGreen

+0

Przepraszam za to. To był błąd w publikowaniu. Ścieżka, z którą pracuję w moim kodzie jest poprawna. –

+0

Jest możliwe, że jest to coś w samym skrypcie. Zrób tę samą ścieżkę ze skryptem testowym, który wykonuje Out-Host lub coś takiego. – EBGreen

Odpowiedz

10

Jednym rozwiązaniem jest przejście do PowerShell v3 gdzie to działa prawidłowo:

PS> powershell.exe -file 'C:\temp\foo - bar\location-1\foo.ps1' arg1 arg2 
made it!, args are arg1, arg2 

Jeśli chcesz pozostać na V2 próbować ucieczki przestrzenie np:

PS> powershell.exe -file "C:\temp\foo` -` bar\location-1\foo.ps1" arg1 arg2 

Od cmd.exe, to powinno działać:

C:\> PowerShell.exe -Command "& {& 'c:\Data\foo - bar\location-1\ShellScript.ps1' Arg1 Arg2}" 
+0

To z "powłoki" Powershell, pytanie dotyczyło wykonywania skryptów Powerhell bezpośrednio z cmd – rob

+0

@rob Dobra uwaga. Sprawdź, czy aktualizacja mojej odpowiedzi pomaga każdemu. –

+0

Tak, to działa, odzyskasz swój punkt widzenia – rob

1
PowerShell.exe -File "c:\Data\foo - bar\location-1\ShellScript.ps1" 

powinien być uciekł

PowerShell.exe "& ""c:\Data\foo - bar\location-1\ShellScript.ps1""" 

Yep, że naprawdę jest w sumie 6 cudzysłowach