Problema com a produção do powershell do meu perfil móvel - Falha ao tentar executar a operação InitializeDefaultDrives no provedor 'FileSystem'

3

Este é um erro muito chato - Falha na tentativa de executar a operação InitializeDefaultDrives no provedor 'FileSystem'. , que recebo sempre que inicio o powershell quando estou fora da rede da empresa.

Uma captura de tela

Umabrevedescrição:

Eutenhoumnotebooknodomínio.Existemduasmaneirasdeusá-lo.Primeiroestádentrodarededaempresaelátudofuncionabem.Asegundamaneiraéquandoestouforadoescritório,conectandoviaVPN.Eleproduzoerromencionadoacimatodavezqueeuinicioopowershell.

Scriptparapesquisaraunidade:

Apartirdeminhanovapesquisadoerro,acausapareceserumaunidadeourecursonãoconectável.

Eutenteidescobrirqualpoderiaseracausa.Comohouvealgumasalteraçõesnaestruturadapastainicial,suspeitei.

Euexecuteiemambososlocaisessescript:

Write-Verbose-Message'Get-PSDrive-PSProviderFileSystem'-verboseecho'Get-PSDrive-PSProviderFileSystem'|Out-File-Append-Encoding"UTF8" -FilePath filesystem.log
Get-PSDrive -PSProvider FileSystem | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log

Write-Verbose -Message 'net use' -verbose 
echo 'net use' | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
net use | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log

Write-Verbose -Message '[System.IO.DriveInfo]::GetDrives() | Format-Table' -verbose
echo '[System.IO.DriveInfo]::GetDrives() | Format-Table' | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log

[System.IO.DriveInfo]::GetDrives() | Format-Table | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log

# does not work properly
# Write-Verbose -Message 'Get-CimInstance -ClassName Win32_LogicalDisk -ComputerName $env:COMPUTERNAME' -verbose | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
#Get-CimInstance -Class Win32_LogicalDisk | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log

Write-Verbose -Message 'Get-CimInstance -Class Win32_NetworkConnection' -verbose 
echo 'Get-CimInstance -Class Win32_NetworkConnection' | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log
Get-CimInstance -Class Win32_NetworkConnection | Out-File -Append -Encoding "UTF8" -FilePath filesystem.log

Resultados:

Parece haver U: \ espreitando das sombras (não aparece quando está no local). Essa é a unidade de rede que foi desconectada e não deve mais ser usada. (há alguns programas legados usando-os e isso deve ser aplicado por meio de regras de GPO)

net use produz:

U:        \server_name\U_login_name$   NFS Network

[System.IO.DriveInfo]::GetDrives() | Format-Table produz:

Name            DriveType DriveFormat       IsReady AvailableFre TotalFreeSpa   TotalSize RootDirecto VolumeLabel
                                                          eSpace           ce             ry                     
----            --------- -----------       ------- ------------ ------------   --------- ----------- -----------
C:\                 Fixed NTFS                 True   1779298304   1779298304 ...43488000 C:\         OSDisk     
U:\               Network                     False                                       U:\  

Get-CimInstance -Class Win32_NetworkConnection

LocalName                    RemoteName                   ConnectionState             Status                     
---------                    ----------                   ---------------             ------                     

U:                           \server_name\U_login_name$      Disconnected                Unavailable                

Por outro lado, quando na rede da empresa diretamente não há U: \ que assim sempre.

O que tentei corrigir a situação

  • desconexão manual

    1) o caminho comum (clique direito em desconectar) um erro é produzido Esta conexão de rede não existe

    2) ao usar o NFS umount u: :

    Disconnecting           U:      \server_name\U_login$
    There are open files and/or incomplete directory searches pending on the connection.
    
    Do you want to continue this operation? (Y/N) [N]:y
    
    Network Error - 2250    Not Connected
    

    3) Tentativa de desconexão forçada de todas as montagens do NFS (unidade U: é relatada como compartilhamento NFS) umount -f -a :

    Network Error - 2250    Not Connected
    
  • sugestões encontradas na internet:

    1) Alterar o GPO

    Para resolver esse problema, aplique a seguinte configuração por meio da política de grupo:

    User Configuration/Administrative Templates/System/Scripts/Run logon scripts synchronously = Enabled

(nota: o computador começa muito, muito lento ao usar o perfil móvel. Tive que desabilitar essa configuração)

2) O drive mapeado não irá embora

Eu tinha grandes esperanças neste link A unidade mapeada não desaparece - continua se reconectando no logon  Eu tenho o mesmo sentimento que no post - para citar:

>  I have indeed checked scripts and GPOs and this is nowhere to be found there. This looks more like a manual mapping that had the
> "Reconnect on logon" checkbox checked and is now so persistent that
> there was no "normal" way to undo it.

Infelizmente, todas as sugestões falharam.

  • registro

    1) Eu pesquisei a string no registro e a encontrei aqui:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2] . Tentei excluir a chave do drive U:, mas ela continua voltando.

2) Eu também encontrei aqui (mas ainda não experimentei; não quero quebrar o SO):

    Windows Registry Editor Version 5.00

    [HKEY_USERS\S-1-5-21-119559289-1840127793-336618761-855951\Volatile Environment]
    "HOMEDRIVE"="U:"
    "LOGONSERVER"="\\logon_server"
    "USERDNSDOMAIN"="dns_domain"
    "USERDOMAIN"="user_domain"
    "USERNAME"="login"
    "USERPROFILE"="C:\Users\login"
    "HOMEPATH"="\"
    "HOMESHARE"="\\server_name\U_login$"
    "APPDATA"="C:\Users\login\AppData\Roaming"
    "LOCALAPPDATA"="C:\Users\login\AppData\Local"
    "USERDOMAIN_ROAMINGPROFILE"="user_domain"

    [HKEY_USERS\S-1-5-21-119559289-1840127793-336618761-855951\Volatile Environment]
    "SESSIONNAME"="Console"
    "CLIENTNAME"=""

Por enquanto, concluí que algo está errado com meu perfil de roaming. Eu ainda tenho que encontrar a razão pela qual o perfil móvel não é atualizado com informações corretas.

Alguém tem ideia / experiência de como corrigir esse problema?

    
por tukan 11.01.2018 / 13:08

1 resposta

0

Finalmente, espero conhecer o motivo e testar alguns cenários.

Primeiro, deixe-me dizer que esse é um BUG do Windows NFS.

Eu não sei como reportar isso à Microsoft como mero mortal. Eu vou reportar aqui e no meu blog.

Existem condições a serem cumpridas para que este erro seja propagado:

1) O computador deve estar no domínio

2) Você tem que usar este computador tanto na rede interna e VPN completa e você tem que tanto no mesmo perfil

3) Você precisa ter a implementação NFS da Microsoft instalada (alias Client for NFS)

4) Você precisa ter o serviço iniciado automaticamente no início do computador. Se o serviço estiver em manual start e for iniciado após a conclusão da sequência de inicialização, o bug não se manifestará.

5) Você precisa ter algum tipo de compartilhamento NFS . O problema aqui é que o compartilhamento NFS leva precedência ao compartilhamento normal net use . Se você desconectar um compartilhamento NFS e, em seguida, mapeá-lo usando net use ... /persistent:yes , esse compartilhamento será substituído após uma reinicialização. Será identificado, após a reinicialização, como compartilhamento NFS novamente, e produzindo o erro.

Como lidar com isso?

Resumindo: Configure o serviço NFS Client para Windows para manual do modo automático . Use o Agendador de Tarefas ou gpedit em conjunto com meus scripts do PowerShell para montagem e desmontando compartilhamentos NFS.   NÃO pare o serviço NFS Client for Windows quando alguns compartilhamentos estiverem montados!

Resposta mais longa:

Ao usar meus scripts, leia as informações abaixo:

Notas & & melhores práticas (importante ler!):

A) NFS mount, at least the Microsoft's implementation, is NOT persistent over boots.  To overcome 
  this you have these options:                                                                    
  I) Schedule this script in Task scheduler under "ordinary" user e.g. DOMAIN\user and have the   
     check-box "Run with highest privileges" (in order to start the NFS Client service if stopped)
 II) Run it in the "Local Group Policy Editor" (gpedit.msc) under "Windows Settings\Scripts"      
     (Startup -> mount and Shutdown -> unmount) in the sections "Computer Configuration" (for all 
      users) or under "User configuration" (for one specific user)                                

B) Do !!!NOT!!! mount NFS drive on system-wide account as "nt authority\system".  At the first    
   glance this seems to be a good idea.  Don't be fooled, it is not!  When you mount NFS share    
   under "SYSTEM" account it will appear as fixed drive for all other users!  On "SYSTEM" account 
   it still will show as network share.  If you stop the NFS Client for Windows service, NOT      
   recommended when any NFS share active, and then start it again, then even under "SYSTEM"       
   account it will appear as "fixed" drive.  It will leave user no option other than restart for  
   unmount.                                                                                       

C) It is NOT a good idea to stop Client for NFS Service when you have NFS mounted.  It can lead   
   to unexpected states like the NFS share actually becoming a hard-drive for windows till reboot.

D) If the Client for NFS Service is started already then it is better not to stop it manually as  
   it can, under certain circumstances, refuse to start.  It is better to have a log-off script   
   take care of the unmount && stopping the service                                               

Erros ou notas de configuração do servidor:

A) You are getting a powershell error:                                                            
   "Attempting to perform the InitializeDefaultDrives operation on the 'FileSystem' provider      
   failed."                                                                                       
   This error can be caused the NFS Client for Windows when service is starting with start of the 
   Windows.  It takes precedence over "ordinary" 'net use' and it causes powershell to check      
   "FileSystem".                                                                                  

Ad A) Solution: Use this script for mounting NFS Share - set it using gpedit policies on start or
you can run via Task scheduler (It tries to start the Client for NFS service) - the script has to have rights to do so Don't forget to set the service "Client for NFS"("NfsClnt")
to manual start so it won't start with the windows startup.

B) If you are getting this error message (at your NFS server):                                    
   "(rpc.mountd[7243]: refused mount request from 192.168.XX.XX for <mount>: illegal port 24784"  
      you are most probably trying to connect on port over 1024.  To connect to NFS share you need
      to have 'insecure' option at your /etc/exports (if missing fix it and run 'exportfs -r')    

TIP: The mounting script requires UAC to start the service, if the service is not started already. You can:

1) run it manually - you will see UAC window                                                      
2) create a new Task in Task Scheduler and check the check box "Run it with highest privileges"   
3) create a startup powershell script in the local policies

Migração da unidade de rede NFS OR windows share (por exemplo, usando a funcionalidade de janelas off-line) para a nuvem

Excluindo a unidade de rede (no meu caso, uma unidade U: )

Esse problema pode surgir quando você tem a funcionalidade de arquivos off-line ativada e os arquivos são de backup para uma unidade de rede. Se a sua empresa mudar isso em favor de ir para algum serviço de nuvem, isso pode lhe trazer uma situação de deadlock em seu perfil, quando algum aplicativo ainda precisar dessa unidade de rede anterior, mas você ainda precisa mudar para um novo provedor de nuvem.

Se você estiver usando um NFS Client for windows da Microsoft, é assim que você se livra da unidade de rede anterior:

Como se livrou da unidade U: (ainda não a mensagem) com as seguintes etapas:

1) Vá para - > Start Menu\Programs\Administrative Tools\Services for Network File System (NFS)

2) Pare client for NFS clicando com o botão direito no item e selecionando stop service

3) A remoção manual simples funciona !!!!

net use u: /delete
--> U: was deleted successfully.

Para que as janelas esqueçam a unidade anterior e configurem corretamente o ambiente volátil para a nova configuração, você deve reinicializar .

Livrar-se da mensagem de erro: Falha ao tentar executar a operação InitializeDefaultDrives no provedor 'FileSystem'.

A mensagem de erro não aparece com Client for NFS interrompido. É suficiente tê-lo no estado manual e iniciá-lo via script

    
por 22.01.2018 / 11:16