Извлечение значений из команды Net Use с помощью powershell - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь получить подключенные к сети диски с помощью приведенных ниже команд.

Get-WmiObject -Class Win32_MappedLogicalDisk |  %{$_.Name}

Get-WmiObject -Class Win32_MappedLogicalDisk |  %{$_.ProviderName}

Это работает в некоторых системах, но не работает в других системах (может быть проблема версии powershell). Поэтому я подумал об использовании команды net use,Тем не менее, я не могу получить значения или не уверен, как получить значения отображаются, когда я набираю «net use»

, когда я набираю net use, я получаю столбцы состояния, Local, Remote и Network.Я пытался использовать приведенную ниже команду для получения значений поля.

net use | select local.

, но я получаю пустое значение или ничего

Используется ниже команды.

net use | select local.

Требуется получитьЛокальные и удаленные значения из команды net use.

Ответы [ 3 ]

0 голосов
/ 14 мая 2019

В зависимости от доступных версий PowerShell вы можете столкнуться с похожими проблемами с
Get-SmbMapping, который окутывает CimClass: ROOT/Microsoft/Windows/SMB:MSFT_SmbMapping.

Но в остальном имеет выход, напоминающий net use.

Для обработки реального вывода net use и преобразования в объект со свойствами,
Вы можете использовать:

$SmbMapping = (net use) -like '* \\*' | ForEach-Object { 
    $Status,$Local,$Remote,$Null = $_ -split ' +',4
    [PSCustomObject]@{
        Status = $Status
        Local  = $Local
        Remote = $Remote
    }
}

Это работает по крайней мере в моей немецкой локали Win10.
(Не уверен насчет других сообщений о состоянии в других локалях.)

0 голосов
/ 15 мая 2019

См. Это для разбора вывода устаревшей консоли ---

Как преобразовать текстовый вывод устаревшего консольного приложения в объекты PowerShell

Еще вместе с тем, что LotPingsдал тебе уже.Ваш запрос может быть дубликатом этого ... Эквивалента сетевого использования (для перечисления соединений с компьютером) в powershell? ... и на него принят ответ

# For the mapped logical drive you can use WMI class Win32_MappedLogicalDisk :

Get-WmiObject Win32_MappedLogicalDisk

# Here is another way with Win32_LogicalDisk :

PS C:\> Get-WmiObject -Query "Select * From Win32_LogicalDisk Where DriveType = 4"

DeviceID     : V:
DriveType    : 4
ProviderName : \\jpbdellf1\c$
FreeSpace    :
Size         :
VolumeName   :

# Edited
# You are right, you can get what you need with Win32_NetworkConnection :
Get-WmiObject Win32_NetworkConnection

LocalName                     RemoteName                    ConnectionState               Status
---------                     ----------                    ---------------               ------
                              \\jpbasusf1\temp              Connected                     OK

# On Seven or W2K8 be careful to call this with the same user that run the NET USE because it's a session information.
0 голосов
/ 14 мая 2019

Как насчет использования get-psdrive (корневой заголовок фактически соответствует свойству displayroot)?

get-psdrive | where displayroot -like '\\*'

Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
Y                  91.84          7.82 FileSystem    \\server....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...