Існує лише один спосіб перерахування загальних ресурсів віддалено з командного рядка, про який я знаю, і це за допомогою 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] } }