Есть только один способ удаленного перечисления общих ресурсов из командной строки, о котором я знаю, и это с net view
:
C:\Users\mark.henderson>net view \\enetsqnap01
Shared resources at \\enetsqnap01
Share name Type Used as Comment
-------------------------------------------------------------------------------
Backups Disk
CallRecordings Disk
Download Disk System default share
home Disk Home
homes Disk System default share
Installs Disk
Justin Disk Copy of files from Justin laptop
michael Disk
Multimedia Disk System default share
Network Recycle Bin 1 Disk [RAID5 Disk Volume: Drive 1 2 3 4]
Public Disk System default share
Qsync Disk Qsync
Recordings Disk System default share
Sales Disk Sales Documents
SalesMechanix Disk
Server2012 Disk Windows Server 2012 Install Media
Usb Disk System default share
VMWareTemplates Disk
Web Disk System default share
The command completed successfully.
Сам по себе это не особо разбирается, но вы можете выбросить его в массив для построчной обработки данных:
$sharedFolders = (NET.EXE VIEW \\enetsqnap01)
Теперь у вас есть массив, и начиная с $sharedFolders[7]
вас есть ваши акции. Затем вы можете split
что-то вроде двойного пробела - вряд ли он появится в самом имени общего ресурса и должен работать, если имя общего ресурса не очень длинное, оставляя только один пробел между именем общего ресурса и полем типа:
$sharedFolders[7].split(' ')[0]
Backups
Вы можете обработать их, используя ForEach и некоторую условную логику. Это не было бы идеально, но это должно работать для большинства случаев использования.
Для краткости просто выведем имена файлов на консоль:
(net view \\enetsqnap01) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } }