2013-12-17 9 views
31

Nie mogę pobrać skryptu powłoki Powerhell, aby bezpośrednio wykonać plik bat. Na przykład, to działa w wierszu polecenia:Najbezpieczniejszy sposób na uruchomienie pliku BAT ze skryptu Powershell

.\\my-app\my-fle.bat 

Kiedy dodać to polecenie do skryptu, to wyjść:

The term '.\\my-app\my-file.bat' is not recognized as the 
name of a cmdlet, function, script file, or operable program. 
Check the spelling of the name, or if a path was included, 
verify that the path is correct and try again. 

Próbowałem również następujące, z tym samym skutkiem:

& .\\my-app\my-fle.bat 
& ".\\my-app\my-fle.bat" 
\my-app\my-fle.bat 
& \my-app\my-fle.bat 
& "\my-app\my-fle.bat" 

Uwaga: Musi zwrócić ostatni kod, ponieważ jest to konieczne do zweryfikowania powodzenia partii.

Odpowiedz

10

Spróbuj tego, twoje źródło kropki było trochę wyłączone. Edytuj, dodając ostatnie bity dla OP.

$A = Start-Process -FilePath .\my-app\my-fle.bat -Wait -passthru;$a.ExitCode

dodać -WindowStyle Hidden dla niewidzialnej partii.

+0

który pracował. Czy to również zwróci status wyjścia w LastExitCode? – cmcginty

+0

aby uzyskać dostęp do $ lastexitcode z procesu startowego, musisz przypisać polecenie do zmiennej i użyć przełącznika passthru, a następnie odczytać kod wyjścia ze zmiennej. –

20

Aby uruchomić bat, i mają dostęp do ostatniego kodu wyjścia, uruchom go jako:

& .\my-app\my-fle.bat 
+0

Działa to tylko wtedy, gdy 'my-app' znajduje się na ścieżce względnej lub używam litery dysku. Próbowałem uniknąć powiązania skryptu z konkretnym napędem. – cmcginty

+1

@ Casey Myślę, że źle mnie zrozumiałem. Więc 'my-app' jest folderem w katalogu głównym dysku, z którym pracujesz? Jeśli tak, "& \ my-app \ my-file.bat" działa dla mnie. Jak dzwonisz do skryptu .ps1? – Rynant