2013-04-30 11 views
11

Ich arbeite an der Erstellung eines Skripts, das Leistungsindikatoren abfeuern und in einer CSV-Datei speichern wird, wenn die Datei zu groß wird. Das Ausführen des Skripts über eine Powershell-Eingabeaufforderung oder die ISE (ich verwende v.2/win server 2008) funktioniert problemlos, und die Dateien werden ordnungsgemäß ausgeführt.Wie kann ich ein Powershell-Skript als Hintergrundaufgabe ausführen, ohne ein Fenster anzuzeigen?

Wenn ich jedoch versuche, den Befehl mithilfe der folgenden Befehlszeile Befehlszeile auszuführen (sogar versuchen, die Befehlszeilenoption/k auf Cmd), wird die Eingabeaufforderung sofort geschlossen und die Datei wird nicht ausgeführt.

powershell.exe -windowstyle hidden {iis_test.ps1} 

Ich habe auch versucht, die folgende, und obwohl ich Powershell nicht zu stoppen (I überwachen sie über den Task-Manager, für Powershell.exe Suche zu zeigen), ich bin nicht die Datei zu sehen sein erstellt.

Noch sehe ich keine Fehler in einem der wahrscheinlichen Orte (Ereignisanzeige, das Eingabeaufforderungsfenster selbst) gefangen.

Irgendwelche Ideen? Letztendlich ist mein Ziel, eine vb Winforms-Sache aufzurufen, diese Skript-Dateien aufzurufen, und natürlich dachte ich, es wäre hilfreich, den Befehl zur Eingabeaufforderung herauszufinden. Hinweis, dass es sehr wichtig ist, dass dieses Skript portabel ist und auf jedem Windows 2008 Server-System ausgeführt wird (ich muss mich also von Drittanbietereinheiten fernhalten, die eine weitere Installation erfordern).

EDIT: Ich musste das Argument -file verwenden, um eine Datei anzugeben, die ausgeführt werden soll.

Antwort

14

versuchen, diese von einer DOS/CMD-Shell:

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

, das funktioniert! Ich habe das auch ungefähr 5 Sekunden vor deiner Antwort gefunden. Vielen Dank! –

+1

zeigt dies immer noch ein Fenster, obwohl kurz beim Start – Sajuuk

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

Aber wenn Sie diesen Befehl ausführen, wird ein CMD-Fenster angezeigt.
Sie können jedoch VBscript anstelle

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 
Verwandte Themen