Este é um resultado de como o Windows funciona. Ou seja, esse comportamento é por design.
As unidades ainda não existem porque o Windows ainda não as mapeou novamente. Ele não faz isso imediatamente porque o sistema operacional fornece o controle do usuário antes que o logon seja realmente concluído. Esta é uma troca entre a funcionalidade exigida e o tempo para a usabilidade. O melhor que você pode fazer é enumerar as unidades em HKEY_CURRENT_USER\Network
ou HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2
, que devem incluir a maioria das unidades mapeadas em rede. No entanto, aqueles mapeados por preferências de política de grupo ou que não são mapeados persistentemente podem não estar presentes no registro.
Você pode ser capaz de evitar esse comportamento desabilitando a Otimização de Logon Rápido por usando a Diretiva de Grupo para forçar o Windows a aguardar a rede no logon, ou o " Executar scripts de logon sincronicamente "para forçar a forçar o sistema a executar todos os scripts antes de iniciar o Explorer. Não tenho certeza de como o segundo interage com GP Preferences. No entanto, de qualquer forma, há alguns efeitos colaterais significativos, como logon mais lento ou possíveis problemas com a impossibilidade de logon se o computador não estiver conectado à rede (por exemplo, um laptop externo). Você não está acelerando nada aqui. Você está apenas atrasando o logon para que mais coisas acabem antes que o Windows permita que o usuário faça qualquer coisa.
Se você realmente precisar executar um script no logon que acesse um compartilhamento de rede, deverá usar o caminho UNC e não a unidade de rede. Deve-se observar que a maioria dos cmdlets do PowerShell oferece suporte a caminhos UNC.
Se você precisar verificar se existe uma unidade mapeada, basta aguardar.
What is the Powershell equivalent of
net use
?
Get-PSDrive
e New-PSDrive
.