5 votos

GPO: Ejecutar PowerShell inicio de sesión secuencias de comandos después de que se ha cargado el explorer.exe

Sé que no es el GPO configuración "de la Configuración del Equipo => Admin. Plantillas => Sistema => secuencias de comandos => Ejecutar scripts de inicio de sesión de forma sincrónica". Esto, sin embargo, asegura que los scripts de inicio de sesión antes de ejecutar el Explorador de Windows se inicia la carga (cuando está activado).

Necesito lo contrario. Quiero para asegurarse de que el explorer.exe se ha cargado correctamente y ejecutar el PowerShell script de inicio de sesión después. Esto es debido a algunos weired las dependencias de una aplicación que necesita para disparar.

He intentado desactivar la configuración que de acuerdo a la descripción debe permitir ejecutar el explorador de archivos y la secuencia de comandos de forma simultánea. Por desgracia, no (sí, yo no se reinicia y gpupdates...)

Así que he intentado agregar una función llamada wait-for-explorer() para mi PowerShell script de inicio de sesión. Duerme en un while bucle hasta que explorer.exe se está ejecutando. Sin embargo, esto no parece funcionar bien.

¿Cuál es la mejor y más forma para solucionar esto? Hay una configuración de GPO estoy vistas?

Este es el aspecto del código:

Function Wait-For-Explorer
{   
    $process = 'explorer.exe'
    $waitTime = 1

    While ($owner.User -ne $env:USERNAME) 
    {   
        try 
        {     
            $owner = (Get-WmiObject -class win32_process | where { $_.ProcessName -eq $process }).GetOwner() | Select -Property User
        }
        catch
        {
            Write-Host "Zzzzz...."
            Start-Sleep -Seconds $waitTime
        }
    }

    Write-Host "Process ${process} is running..."
}

Actualización

He encontrado la respuesta a mi pregunta y por qué no existe esa opción proporcionada por Microsoft. La razón es que, según el artículo de Technet Cómo básicas de Directiva de Grupo de Obras, el procesamiento de Directiva de Grupo es sincrónica, lo que significa que el equipo de la Directiva de Grupo se ha completado antes de que el cuadro de diálogo de inicio se presenta, y de la Directiva de Grupo de usuario se ha completado antes de que el shell está activa y disponible para el usuario para interactuar con él. Esto a su vez significa que no hay (directo) posibilidad de que el motor de directiva de grupo para iniciar un proceso después de que el usuario shell ha sido cargado...

1voto

Craig620 Puntos 1580

¿Has probado ejecutando como una tarea programada con un gatillo de "Inicio de sesión de usuario"? Esto podría eliminar la necesidad de una función así.

SCHTASKS /Create [/S system [/U username [/P [password]]]]
    [/RU username [/RP password]] /SC schedule [/MO modifier] [/D day]
    [/M months] [/I idletime] /TN taskname /TR taskrun [/ST starttime]
    [/RI interval] [ {/ET endtime | /DU duration} [/K] [/XML xmlfile] [/V1]]
    [/SD startdate] [/ED enddate] [/IT | /NP] [/Z] [/F]

Description:
    Enables an administrator to create scheduled tasks on a local or
    remote system.

Parameter List:
<...many switches delted...>
/SC   schedule     Specifies the schedule frequency.
                   Valid schedule types: MINUTE, HOURLY, DAILY, WEEKLY,
                   MONTHLY, ONCE, ONSTART, ONLOGON, ONIDLE, ONEVENT.

enter image description here

1voto

Trondh Puntos 3401

Si nos fijamos en cómo MDT (http://technet.microsoft.com/en-us/windows/dn475741.aspx) para ello, pone como acceso directo en la carpeta de usuario "Inicio". Así que prácticamente está garantizado que el script no se ejecutará hasta que el usuario ha iniciado sesión y el escritorio se presenta. Si usted cava un poco en la carpeta de scripts de MDT encontrarás scripts preparados para la creación de estos accesos directos.

1voto

Matze Puntos 639

Me topé justo encima de la configuración siguiente:

Configuración de usuario => políticas => plantillas administrativas => sistema => inicio de sesión => ejecutar estos programas en el inicio de sesión de usuario

Cuando se llama a mis scripts desde aquí todo funciona. Esto (parece) actúan de la misma manera como hace el "Script de inicio de sesión" dentro del objeto de usuario de AD. Se espera que el explorador de archivos terminar de cargar y luego ejecuta los scripts... así que misión cumplida! Gracias a todos!

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: