Fechando sessões de pasta compartilhada remotamente

4

Introdução:

Eu tenho um script que copia alguns dados do servidor local (Servidor A) para outro servidor (Servidor B) através de um caminho UNC, o compartilhamento no Servidor B foi criado para um disco rígido externo que é alterado todos os dias, depois que o HDD externo é trocado, o novo HDD é montado usando o comando mountvol, a letra atribuída é a mesma, mas como você já deve saber, o nome do volume de cada HDD é diferente.

O problema como eu entendi (passo a passo):

Se eu abrir o Explorer no Servidor B e ir para o caminho UNC, o que significa que no Servidor A há uma sessão do Servidor B para o meu (Usuário X), no cmd eu executo usando outra conta (Usuário Y) por exemplo:

dir \path"

e eu vejo os arquivos, então, neste ponto, há duas sessões do mesmo computador e usuários diferentes.

Curiosity: a sessão do usuário Y permanecerá até que na linha de comando você escreva outro comando ou a janela cmd perderá o foco - em vez de fechar a sessão logo após o comando dir ser concluído.

Com a curiosidade acima, a segunda sessão do usuário Y pode ser ignorada nesse caso, isso nos deixa uma sessão no servidor A para o usuário X

Eu vou para o Servidor B, desmonto o HDD usando o mountvol (também pode ser feito no Gerenciamento do Computador), troco o HDD e depois montei o novo HDD.

Eu volto para o servidor A, na janela do cmd eu executo novamente o comando DIR com qualquer usuário da conta X ou Y, e fico:

The system cannot find the file specified.

Se eu for para a janela do explorador aberto e atualizar a janela, os arquivos também não aparecerão.

  • Encontrei na internet que depois de reiniciar o processo do explorer no Servidor B, os arquivos compartilhados ficam visíveis novamente, ou seja, excluindo as sessões no Servidor A (todas as sessões?), outro truque era apenas excluir a sessão no Servidor B.

Solução possível - > Eu quero sua ajuda aqui:)

Como o script (script em lote) é automático e não quero verificar se há alguma sessão de bloqueio do Servidor B no Servidor A, gostaria de forçar o encerramento de todas as sessões de suspensão de um determinado compartilhamento em Servidor A MAS gostaria de fazê-lo a partir do meu script no Servidor B, o "net sess (ion (s))" é para fins locais.

Se você tiver alguma outra sugestão, com isso eu quero dizer outra possível solução, por favor me avise. Obrigado.

Informações técnicas:

Server A: Windows Server 2008 R2 Enterprise SP1
Server B: Windows Server 2003 Enterprise SP2

Notas: Me corrija se eu estiver errado, mas acho que:

  1. Atualizar a exibição na janela do Explorer para um caminho UNC não funciona, pois o nome do volume é diferente, desmontá-lo e montá-lo novamente (o mesmo HDD) faz com que a atualização funcione normalmente. Isso é talvez um funcionamento de segurança? Ou isso é um bug? ou estou faltando alguma coisa?

  2. Depois de executar dir para um caminho unc e recuperar a lista de arquivos, feche imediatamente a sessão, pois não há mais "processamento" com ela.

  3. Depois de executar o diretório para um caminho unc, as sessões permanecem abertas, mas quando você clica em outra janela (a janela cmd perde o foco), a sessão desaparece.

por Black Binary Co. 23.05.2014 / 18:15

1 resposta

1

Este é um ótimo exemplo de como o PowerShell pode ser muito superior a algumas das ferramentas de script em lote nativas. Você pode usar o cmdlet New-PSDrive para mapear uma unidade no Servidor B. A unidade só persistir para essa sessão específica do PowerShell, portanto, se você executar um novo script e / ou uma sessão do PowerShell, o mapeamento da unidade não será mais armazenado em cache. Você também pode apenas remover a unidade e recriado com Remove-PSDrive dependendo do seu caso de uso.

    
por 23.05.2014 / 18:44