Sei que existe a configuração GPO "Configuração do computador = > Modelos de administrador = > Sistema = > Scripts = > Executar scripts de logon de forma síncrona ". Isso, no entanto, garante que os scripts de logon sejam executados antes de o Windows Explorer iniciar o carregamento (quando ativado).
Eu preciso do oposto. Eu quero garantir que o explorer.exe foi carregado com êxito e executar o script de logon do PowerShell posteriormente. Isso se deve a algumas dependências estranhas de um aplicativo que preciso disparar.
Eu tentei desativar a configuração que, de acordo com a descrição, deve permitir executar o explorador de arquivos e o script simultaneamente. Infelizmente, isso não acontece (sim, eu fiz reboots e gpupdates ...)
Então, tentei adicionar uma função chamada wait-for-explorer () ao meu script de logon do PowerShell. Ele dorme em um loop while
até que o explorer.exe esteja em execução. No entanto, isso parece não funcionar corretamente.
Qual é a melhor e mais limpa maneira de resolver isso? Existe uma configuração de GPO que estou negligenciando?
É assim que o código se parece:
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..."
}
Atualizar
Encontrei a resposta para minha pergunta e por que não existe essa opção fornecida pela Microsoft. A razão é que, de acordo com o artigo da Technet Como a Política de Grupo Principal Funciona , o processamento da Diretiva de Grupo é síncrono, o que significa que a Diretiva de Grupo do computador é concluída antes que a caixa de diálogo de logon seja apresentada e a Diretiva de Grupo do usuário seja concluída antes de o shell estar ativo e disponível para o usuário para interagir com ele. Isso, por sua vez, significa que não há possibilidade (direta) de o mecanismo de diretiva de grupo iniciar um processo após o shell do usuário ter sido carregado ...