Blog Calendar

July 2010
Sun Mon Tue Wed Thu Fri Sat
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7

Visitors Statistics

6
77
11329

Eliminar procesos del WebServer de Visual Studio

Cuantas veces no sucede que ejecutas una aplicación web de Visual Studio y se queda el servidor activo? En algunas ocasiones facilita la ejecución de la página, pero en otras ocasiones es muy molesto porque si trabajas con cache o alguna marranada en memoria y tienes varias aplicaciones en el proyecto, pueden cargarse tantas instancias como proyectos web tengas.


Si quieres el camino rápido ejecuta los siguientes pasos.
  • Guarda en un archivo el comando (llamalo como quieras con extensión ps1):
Get-Process | Where { $_.Name -Eq "WebDev.WebServer" } | Kill
  • Genera un acceso directo en el escritorio poniendo lo siguiente, sustituyendo ScriptKillWS.ps1 por el nombre de tu script:
PowerShell.exe [PathDelArchivo]\ScriptKillWS.ps1

Acceso Directo
  • Asigna los permisos de ejecución de scripts de Power Shell en tu máquina
Set-ExecutionPolicy RemoteSigned
Update:[04/Marzo/2010] Si con esto no te deja ejecutarlo, en la terminal después de ejecutar el comando anterior manda a llamar el script desde consola.
Set-ExecutionPolicy RemoteSigned
ScriptKillWS.ps1

Ahora ... quieres entender lo que hiciste? .. sigue leyendo face-devil-grin.png



Para esto se me ocurrió que google podría ayudarme a conocer como eliminarlos mediante un script, además, como he tenido algo de ganas de conocer los comandos de Power Shell, que mejor que este incidente para presentarme con los comandos e iniciar una relación más cercana de amigos, que digo de amigos de compadres, jejeje.


Ok, lo primero que debemos conocer es que como obtener un listado de los procesos que se ejecutan en la máquina. El comando en Power Shell es Get-Process.


Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
76 8 1492 4604 31 0.12 5884 alg
113 11 1500 4204 40 0.25 1768 AppleMobileDeviceService
87 14 2252 5380 46 0.17 4316 aspnet_state
26 6 960 3292 42 0.17 7136 BluetoothHeadsetProxy
299 40 31016 15556 169 1.29 6668 BTStackServer
220 17 6708 13904 137 0.16 2340 BTTray
107 9 2228 5308 59 0.14 1900 btwdins
92624 23 18968 1508 86 1.00 3528 ccSvcHst
129 103 128348 121960 249 202.61 404 chrome
2206 40 34920 47640 290 132.49 3552 chrome
99 13 4632 8736 111 0.02 3768 chrome

Luego realizamos un filtro con Where:


Get-Process | Where { $_.Name -Eq "WebDev.WebServer" }

Y por último ponemos un Kill:


Get-Process | Where { $_.Name -Eq "WebDev.WebServer" } | Kill

Explicando el comando, lo que significa la sentencia anterior es que obtenemos los procesos (Get-Process), le pasamos el resultado al filtro (Where) donde le decimos que proceso queremos eliminar, osea, donde el nombre ($_.Name) sea igual (-Eq) al proceso que estamos buscando (WebDev.WebServer) y por último le decimos que todos los que coincidan se mueran (Kill).... osea .. que se jodan!


OK, que bonito, ya sabemos que con Power Shell se pueden eliminar procesos, pero luego el pequeño saltamontes interno que siempre quiere aprender le pregunta al Hamster que siempre está activo en nuestro cerebro. ... ¿Cada que quiera eliminar procesos tengo que abrir la consola de Power Shell? No mi querido saltamontes solo tienes que seguir algunos pasos y el primero es guardar el comando anterior en un script llamado ScriptKillWS.ps1


Para facilitarnos la vida ahora solo tenemos que hacer un pequeño acceso directo en el escritorio para ejecutarlo cada vez que se quiera eliminar ese proceso con los siguientes parámetros:


PowerShell.exe [PathDelArchivo]\ScriptKillWS.ps1

Hasta ahí todo va bien, sin embargo resulta que para ejecutar un script en tu máquina por default las políticas de windows (que ya va mejorando la seguridad) nos restringe y salvo se lo indiquemos explicitamente no podremos ejecutar nuestro script antes realizado.


Aquí es donde entramos a la consola de Power Shell y tecleamos:


Set-ExecutionPolicy RemoteSigned

Y listo, nuestro script para eliminar procesos ayudará a no tener que cerrar cada instancia manualmente.

Trackback URI: http://es.iver.com.mx/index.php?trackback/153

Leave a Comment

Write the captcha code you are seeing.

Comment XML feeds: RSS | Atom