Jest tylko jeden sposób na wyliczanie udziałów zdalnie z linii poleceń, jaki znam, i jest to 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.
To nie jest szczególnie parsowalne samo w sobie, ale, możesz wrzucić to do tablicy, aby przetwarzać dane linia po linii:
$sharedFolders = (NET.EXE VIEW \enetsqnap01)
Masz teraz tablicę, i zaczynając od $sharedFolders[7]
masz swoje udziały. Mógłbyś wtedy split
na czymś takim jak podwójna spacja - mało prawdopodobne, że pojawi się w samej nazwie akcji, i powinno działać, chyba że twoja nazwa akcji jest bardzo długa, pozostawiając tylko pojedynczą spację pomiędzy nazwą akcji a polem typu:
$sharedFolders[7].split(' ')[0]
Backups
Mógłbyś przetworzyć te dane używając ForEach i trochę logiki warunkowej. Nie byłoby to idealne rozwiązanie, ale powinno działać dla większości przypadków użycia.
Dla zwięzłości, aby po prostu wypisać nazwy plików na konsolę:
(net view \enetsqnap01) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } }