2013-04-30 26 views
11

Sto lavorando alla creazione di uno script che consenta di attivare i contatori delle prestazioni e li memorizza in un file .csv, scorrendo quando il file diventa troppo grande. L'esecuzione dello script da un prompt di PowerShell o ISE (sto eseguendo v.2/win server 2008) funziona correttamente e i file funzionano correttamente.Come posso eseguire uno script PowerShell come attività in background senza visualizzare una finestra?

Tuttavia, quando provo a eseguire il comando utilizzando la seguente riga del prompt di cmd (anche provando l'opzione/k su cmd), il prompt dei comandi si chiude immediatamente e il file non viene eseguito.

powershell.exe -windowstyle hidden {iis_test.ps1} 

Ho anche provato la seguente, e anche se vedo PowerShell non si ferma (I monitorare tramite il task manager, alla ricerca di Powershell.exe di presentarsi), non sto vedendo il file di essere creato.

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

Né sto vedendo eventuali errori catturati in uno dei luoghi che possono (Visualizzatore eventi, il prompt finestra di comando stesso).

Qualche idea? In definitiva, il mio obiettivo è quello di fare in modo che una vb winforms chiami questi file di script, e naturalmente ho pensato che il comando del prompt dei comandi sarebbe stato utile. Nota: è molto importante che questo script sia portatile ed eseguito su qualsiasi sistema Windows 2008 Server (quindi ho bisogno di stare lontano da entità di terze parti che richiederebbero un'ulteriore installazione).

MODIFICA: Avevo bisogno di usare l'argomento -file per specificare un file da eseguire.

risposta

14

provare questo da una shell DOS/CMD:

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

che funziona! Ho anche scoperto che circa 5 secondi prima della tua risposta. Grazie! –

+1

questo mostra ancora una finestra, anche se brevemente all'avvio – Sajuuk

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

Ma quando si esegue questo comando, viene visualizzata una finestra CMD.
Tuttavia, è possibile utilizzare VBScript invece

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 
Problemi correlati