web-dev-qa-db-fra.com

GPO: Exécutez le script de connexion PowerShell après Explorer.exe a été chargé

Je sais qu'il y a le [~ # ~ # ~] gpo [~ # ~] Réglage "Configuration de l'ordinateur => admin. Templates => Système => Scripts => Exécuter des scripts de connexion synchrone". Cependant, cela garantit que les scripts de connexion fonctionnent avant que Windows Explorer ne démarre que le chargement (lorsqu'il est activé).

J'ai besoin de la chose opposée. Je veux m'assurer que l'explorateur.exe a chargé avec succès et exécuter le script de connexion PowerShell. Cela est dû à certaines dépendances de la demande d'une application dont j'ai besoin pour déclencher.

J'ai essayé de désactiver le réglage qui, selon la description, il faut permettre d'exécuter l'explorateur de fichiers et du script simultanément. Malheureusement, cela ne fait pas (oui, j'ai fait des redémarrages et des gpupdates ...)

J'ai donc essayé d'ajouter une fonction appelée wait-for-explorateur () à mon script de connexion PowerShell. Il dort dans une boucle while jusqu'à ce que Explorer.exe est en cours d'exécution. Cependant, cela semble ne pas fonctionner correctement.

Quel est le moyen le plus propre et le plus propre de résoudre ce problème? Y a-t-il un fichier GPO correspond-je surplombe?

C'est ce que le code ressemble à:

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..."
}

Mettre à jour

J'ai trouvé la réponse à ma question et pourquoi il n'y a pas de telle option fournie par Microsoft. La raison en est que, selon l'article TechNet comment fonctionne la stratégie de groupe de base, le traitement de la stratégie de groupe est synchrone, ce qui signifie Cette stratégie de groupe informatique est terminée avant la présentation de la boîte de dialogue d'ouverture de la connexion et la stratégie de groupe d'utilisateurs est terminée avant que la coque ne soit active et disponible pour que l'utilisateur interagisse. Ceci à son tour signifie qu'il n'y a pas de possibilité (directe) pour le moteur de stratégie de groupe de démarrer un processus après le chargement de la coque de l'utilisateur ...

6
Matze

Si vous regardez comment MDT ( http://technet.microsoft.com/en-us/windows/dn475741.aspx ) Est-ce que cela, il place comme raccourci dans le dossier "Démarrage" de l'utilisateur. De cette façon, vous êtes à peu près garanti que le script ne fonctionnera pas tant que l'utilisateur s'est connecté et que le bureau est présenté. Si vous creusez un peu dans le dossier des scripts MDT, vous trouverez des scripts prêts à la création de ces raccourcis.

1
Trondh