none
Es posible ejecutar una instrucción en PowerShell hasta que finalice un proceso X? RRS feed

  • Pregunta

  • Buenas tardes

    Es posible ejecutar una instrucción en PowerShell hasta que finalice un proceso X?

    Ejemplo: 

    Mi instrucción sería mostrar una notificación de Windows una vez finalizado un proceso de cifrado. 

    Puede ser con cualquier otro ejemplo, lo que busco es controlar y lanzar cierta instrucción al finalizar un proceso X.

    Gracias de antemano.



    miércoles, 20 de febrero de 2019 19:19

Respuestas

  • Hola,

    Puedes hacerlo así:

    Clear-Host
    $Proceso = $null
    $NombreProceso = "Firefox" #Aquí pones el nombre del proceso que quieres comprobar
    $Proceso = Get-Process -Name $NombreProceso -ErrorAction SilentlyContinue
    [int]$I = "0"
    If ($Proceso)
    {
    	Write-Host "El proceso $NombreProceso está en ejecución"
    	While ($Proceso)
    	{
    		$I++
    		Write-Output "Proceso $NombreProceso en ejecución - Chequeo $I" #Esta salida es únicamente para que veas que se está ejecutando el script y no está "muerto"
    		Start-Sleep 10 #Frecuencia con la que queremos comprobar el estado del proceso.
    		$Proceso = $null
    		$Proceso = Get-Process -Name "Firefox" -ErrorAction SilentlyContinue
    	}
    	Write-Host "Proceso $NombreProceso finalizado. Podemos lanzar el código deseado"
    	#Aquí pones lo que quieras lanzar
    }
    Else
    {
    	Write-Host "El proceso $NombreProceso no se encuentra en ejecución"
    }

    Sobre "mostrar una notificación de Windows" al finalizar, eso depende mucho del tipo de notificación que quieras.

    No se si te refieres a escribir en el visor de sucesos, mostrar una ventana emergente, etc. pero cualquiera de esas opciones la encontrarás fácilmente en Google.

    Espero que te sirva.

    Un saludo.

    Diego

    jueves, 21 de febrero de 2019 9:24

Todas las respuestas

  • Hola,

    Puedes hacerlo así:

    Clear-Host
    $Proceso = $null
    $NombreProceso = "Firefox" #Aquí pones el nombre del proceso que quieres comprobar
    $Proceso = Get-Process -Name $NombreProceso -ErrorAction SilentlyContinue
    [int]$I = "0"
    If ($Proceso)
    {
    	Write-Host "El proceso $NombreProceso está en ejecución"
    	While ($Proceso)
    	{
    		$I++
    		Write-Output "Proceso $NombreProceso en ejecución - Chequeo $I" #Esta salida es únicamente para que veas que se está ejecutando el script y no está "muerto"
    		Start-Sleep 10 #Frecuencia con la que queremos comprobar el estado del proceso.
    		$Proceso = $null
    		$Proceso = Get-Process -Name "Firefox" -ErrorAction SilentlyContinue
    	}
    	Write-Host "Proceso $NombreProceso finalizado. Podemos lanzar el código deseado"
    	#Aquí pones lo que quieras lanzar
    }
    Else
    {
    	Write-Host "El proceso $NombreProceso no se encuentra en ejecución"
    }

    Sobre "mostrar una notificación de Windows" al finalizar, eso depende mucho del tipo de notificación que quieras.

    No se si te refieres a escribir en el visor de sucesos, mostrar una ventana emergente, etc. pero cualquiera de esas opciones la encontrarás fácilmente en Google.

    Espero que te sirva.

    Un saludo.

    Diego

    jueves, 21 de febrero de 2019 9:24
  • Buenos días Diego

    Tiene muy buena pinta, estaba pensando algo similar con Start-Sleep pero no lograba concretarlo y me preocupaba que fuera a consumir mucha memoria.

    Lo voy a probar y en seguida lo pruebe, marco como respuesta tu amable ayuda y te aviso, lo de la notificación ya lo tengo, solo me falta lo que muy amablemente me compartes.

    Nuevamente muchas gracias y te aviso en cuanto lo haya probado.muchas gracias!




    • Editado unorojo domingo, 24 de febrero de 2019 22:09
    sábado, 23 de febrero de 2019 15:53
  • Justo lo que estaba buscando,  muchas gracias Diego!
    domingo, 24 de febrero de 2019 22:09