Win32_LogicalDisk não recupera unidades de rede de máquinas remotas

2

Gostaria de usar o WMI para recuperar todos os discos lógicos de um host remoto. Por algum motivo desconhecido, a execução de get-wmiobject Win32_LogicalDisk -computername remoteHost falha ao incluir unidades de rede localizadas no host do Windows remoto. No entanto, executar get-wmiobject Win32_LogicalDisk localmente em remoteHost recupera com êxito todos os discos lógicos, unidades de rede incluídas.

Por exemplo, a execução do comando recupera localmente todos os discos lógicos (saída formatada para clareza):

>get-wmiobject Win32_LogicalDisk

DeviceID     : A:
DriveType    : 2

DeviceID     : C:
DriveType    : 3

DeviceID     : D:
DriveType    : 5

DeviceID     : S:   // this is a network drive
DriveType    : 4
ProviderName : \path\Share

No entanto, a execução do mesmo comando remotamente falha ao recuperar a unidade de rede S:

>get-wmiobject Win32_LogicalDisk -computername remoteHost -credential DOMAIN\Admin

DeviceID     : A:
DriveType    : 2

DeviceID     : C:
DriveType    : 3

DeviceID     : D:
DriveType    : 5

O mesmo acontece se eu usar o WinRM. O host remoto está executando o Win Server 2012 R2. O resultado é o mesmo, não importa em que SO eu execute o comando (Win7, Win Server 2008 R2, Win Server 2012 R2).

Alguma idéia do que pode estar causando a (s) unidade (s) de rede ser omitida do conjunto de resultados?

    
por w128 21.09.2015 / 16:31

3 respostas

2

Acontece que usar Win32_MappedLogicalDisk recuperará especificamente unidades de rede mesmo de hosts remotos.

Isenção de responsabilidade: não garanto que essa solução seja a melhor (ou até exata) maneira de resolver esse problema, nem sei se há alguma consideração adicional envolvida; isso apenas resolve meu problema específico.

    
por 22.09.2015 / 10:13
2

Até onde eu pesquisei, existem 2 locais onde o Windows armazena as unidades de rede (unidades de mapa, se você excluir as unidades PS).

  • Um é o WMI, como mencionado aqui, você pode obter essas informações na classe WMI Win32_MappedLogicalDisk.

  • Dois é registro, em HKEY_Current_User: \ Network Todas as chaves aqui, são cartas de rede e informações de unidade de mapa.

Um ex. em uma chave é:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Network\x]
"RemotePath"="\\Server1\ShareName"
"UserName"=dword:00000000
"ProviderName"="Microsoft Windows Network"
"ProviderType"=dword:00020000
"ConnectionType"=dword:00000001
"DeferFlags"=dword:00000004

Código do Powershell

Para obter as informações do Mapdrive: Get-ItemProperty -Path "HKCU:\Network\*"

Você não pode obter essas informações no contexto do usuário de logon. Essas informações são armazenadas em outro contexto de usuários e não são acessíveis a você. Eu não posso ir mais longe para isso aqui, como este é um grande tópico em PowerShell ou para esse assunto. Net.

Para obter essas informações do Registro e do WMI, você precisará executar o código no contexto dos usuários. Você pode obter a credencial para o usuário, pode criar um GPO, que é executado no contexto de usuários registrados ou pode usar o System Center para executar o código no contexto "Fazer logon nos usuários".

Espero que esta informação seja útil. Levou algum tempo para eu aprender e desenterrar.

    
por 17.06.2016 / 10:13
0

até isso funciona

Get-WmiObject -Class Win32_logicaldisk  -Filter DriveType=4
    
por 21.07.2016 / 00:27

Tags