2013-04-30 6 views
11

Pracuję nad utworzeniem skryptu, który uruchomi liczniki wydajności i zapisze je w pliku .csv, przewracając, gdy plik stanie się zbyt duży. Uruchomienie skryptu z wiersza polecenia powłoki lub ISE (używam serwera v.2/win 2008) działa dobrze, a pliki działają poprawnie.Jak uruchomić skrypt programu PowerShell jako zadanie w tle bez wyświetlania okna?

Jednak, gdy próbuję wykonać polecenie za pomocą następującej linii zachęty cmd (nawet próbując przełącznika/k na cmd), wiersz polecenia zamyka się natychmiast, a plik nie jest uruchamiany.

powershell.exe -windowstyle hidden {iis_test.ps1} 

Próbowałem zostały również następujące, i chociaż widzę PowerShell nie zatrzyma (I monitorować je za pomocą menedżera zadań, szukając powershell.exe aby pokazać się), nie widzę plik będący stworzony.

powershell.exe -noexit -windowstyle hidden {iis_test.ps1} 

Nie widzę również żadnych błędów wychwyconych w żadnym z prawdopodobnych miejsc (przeglądarka zdarzeń, samo okno wiersza polecenia).

Wszelkie pomysły? Ostatecznie moim celem jest wywołanie tych plików skryptowych za pomocą funkcji vb-winforms i oczywiście myślę, że pomocna byłaby opcja polecenia polecenia. Uwaga, że bardzo ważne jest, aby ten skrypt był przenośny i działał w każdym systemie Windows 2008 Server (więc muszę trzymać się z dala od podmiotów trzecich, które wymagałyby dalszej instalacji).

EDYCJA: Potrzebowałem użyć argument -file, aby określić plik do uruchomienia.

Odpowiedz

14

spróbować tego z powłoki DOS/CMD:

powershell.exe -windowstyle hidden -file C:\iis_test.ps1 
+2

To działa! Zauważyłem też, że około 5 sekund przed twoją odpowiedzią. Dzięki! –

+1

to nadal wyświetla okno, chociaż krótko po uruchomieniu – Sajuuk

5
Powershell.exe -windowstyle hidden -file C:\iis_test.ps1 

Ale po uruchomieniu tego polecenia pojawi się okno CMD.
Można jednak użyć VBscript zamiast:

Set objShell = CreateObject("WScript.Shell") 
objShell.Run "CMD /C START /B " & objShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\WindowsPowerShell\v1.0\powershell.exe -file " & "YourScript.ps1", 0, False 
Set objShell = Nothing 
Powiązane problemy