es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Sitecore PowerShell esperar a que se cierre el modal de Show-ListView antes de continuar.

Estoy escribiendo un script que elimina usuarios que no hayan iniciado sesión desde una fecha proporcionada por el usuario.

Quiero hacer lo siguiente:

  1. Obtener la fecha del usuario. (no hay problema aquí)
  2. Obtener una lista de usuarios. (no hay problema aquí)
  3. Presentar al usuario una ListView de los usuarios potencialmente afectados. (no hay problema aquí)
  4. Esperar a que se cierre la ventana modal antes de continuar (aquí es donde me quedo atascado)
  5. Hacer algunas otras cosas…

Los pasos 1-3 funcionan bien, pero cuando aparece la ventana modal, todo el código posterior se ejecuta inmediatamente con la ventana modal aún abierta.

Pensé que Wait-ScriptSession podría ser la solución, pero no está funcionando. Esto es lo que tengo ahora mismo (pseudo-código):

#obtener usuarios, etc.
Start-ScriptSession -ScriptBlock {$listOfRemovedUsers | Show-ListView @outputProps -Property $columns} -Id “Removable Users Modal” -Interactive
Wait-ScriptSession -Id “Removable Users Modal” -Timeout 30
#hacer algunas cosas más

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para esperar correctamente a que el usuario cierre la ventana modal, puedes utilizar el comando Show-ListView con el parámetro -PassThru para recibir la respuesta del usuario. Aquí tienes una versión actualizada de tu código:

    # reunir usuarios, etc.
    $selectedUsers = Start-ScriptSession -ScriptBlock {
        $listOfRemovedUsers | Show-ListView @outputProps -Property $columns -PassThru
    } -Id "Removable Users Modal" -Interactive
    
    # esperar a que el usuario cierre la ventana modal
    Wait-ScriptSession -Id "Removable Users Modal" -Timeout 30
    
    # recuperar los usuarios seleccionados y hacer más cosas
    $removedUsers = $listOfRemovedUsers | Where-Object { $selectedUsers -contains $_.Username }
    # hacer más cosas con $removedUsers
    

    En este código actualizado, la variable $selectedUsers almacena la respuesta del usuario (es decir, la lista de usuarios seleccionados). Al utilizar el parámetro -PassThru con Show-ListView, el comando espera a que el usuario cierre la ventana modal y devuelve la respuesta del usuario. Luego se utiliza el cmdlet Where-Object para filtrar la lista original de usuarios y quedarse con aquellos que fueron seleccionados por el usuario, los cuales se almacenan en la variable $removedUsers.

Comments are closed.