Win32_LogicalDisk не получает сетевые диски от удаленных машин

Я хотел бы использовать WMI для получения всех логических дисков от удаленного хоста. По некоторой неизвестной причине, работая get-wmiobject Win32_LogicalDisk -computername remoteHost сбои для включения сетевых дисков, расположенных в удаленный хост Windows. Однако выполнение get-wmiobject Win32_LogicalDisk локально на remoteHost успешно получает все логические диски, включенные сетевые диски.

Например, выполнение команды локально получает все логические диски (вывод, отформатированный для ясности):

>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

Однако выполнению той же команды удаленно не удается получить сетевой диск S:

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

DeviceID     : A:
DriveType    : 2

DeviceID     : C:
DriveType    : 3

DeviceID     : D:
DriveType    : 5

То же происходит, если я использую WinRM. Удаленный хост выполняет Сервер Победы 2 012 R2. Результатом является то же независимо от того, что ОС я работаю на команде (Win7, Сервер Победы 2 008 R2, Сервер Победы 2 012 R2).

Какие-либо идеи, что может заставлять сетевой диск (диски) быть опущенным от набора результатов?

2
задан 21 September 2015 в 17:31
4 ответа

Оказывается, использование Win32_MappedLogicalDisk специально извлекает сетевые диски даже с удаленных хостов.

Отказ от ответственности: Я не гарантирую, что это решение является лучшим (или даже точным) способом решения этой проблемы, и не знаю, есть ли какие-то дополнительные соображения; оно просто решает мою конкретную проблему.

.
2
ответ дан 3 December 2019 в 10:01

Насколько я выяснил, есть 2 места, где Windows хранит сетевые диски (сопоставление дисков, если исключить PS-диски).

  • Одно из них - WMI, как упоминалось здесь, вы можете получить эту информацию в классе WMI Win32_MappedLogicalDisk.

  • Два - это реестр, в HKEY_Current_User: \ Network Все ключи здесь - это сетевые буквы и информация о сопоставлении дисков.

Пример. на ключе:

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

Код Powershell

Для получения информации о Mapdrive: Get-ItemProperty -Path "HKCU: \ Network \ *"

Вы не можете получить эту информацию в контексте входа в систему. . Эта информация хранится в контексте другого пользователя и недоступна вам. Я не могу вдаваться в подробности здесь, так как это БОЛЬШАЯ тема в Powershell или, если на то пошло, .Net.

Чтобы получить эту информацию из реестра и WMI, вам нужно будет запустить код в контексте пользователя. Вы можете получить учетные данные для пользователя, вы можете создать объект групповой политики, который будет работать в контексте пользователей, вошедших в систему, или вы можете использовать System Center для запуска кода в контексте «Вход в систему пользователей».

Надеюсь, это полезная информация . Мне потребовалось время, чтобы научиться и откопать.

2
ответ дан 3 December 2019 в 10:01

даже это работает

Get-WmiObject -Class Win32_logicaldisk  -Filter DriveType=4
0
ответ дан 3 December 2019 в 10:01

Согласно этой информации enmimaquinafunciona: Ver todas las unidades mapeadas (просмотр сетевых дисков) команда Power Shell: Get-WmiObject "Win32_MappedLogicalDisk", а также команда > net use должны работать для этой цели, однако они недоступны и не возвращают никакой информации со времен Windows Vista.

  1. Существует обходной путь для чтения непосредственно ключа реестра из Power Shell:

Get-ChildItem Реестр::HKEY_CURRENT_USER\Network\*

  1. Если вы можете редактировать реестр, есть posible решение: В HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System Создайте DWORD с именем EnableLinkedConnections и установите его значение на 1. Вам нужно будет перезагрузить компьютер.

После создания этого ключа можно использовать обе команды Get-WmiObject и net use в Power Shell и Windows Command Prompt соответственно.

Это работало на компьютере с Windows 10.

.
0
ответ дан 3 December 2019 в 10:01

Теги

Похожие вопросы