Er is maar één manier om aandelen op afstand op te sommen vanaf de commandoregel die ik ken, en dat is met 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.
Dit is op zichzelf niet erg leesbaar, maar je kunt het in een array gooien om de gegevens regel voor regel te verwerken:
$sharedFolders = (NET.EXE VIEW \enetsqnap01)
Je hebt nu een array, en beginnend bij $sharedFolders[7]
heb je je shares. Je zou dan split
kunnen zetten op iets als een dubbele spatie - die waarschijnlijk niet in een aandelennaam zelf voorkomt, en zou moeten werken tenzij je aandelennaam erg lang is, en alleen een enkele spatie laten tussen de aandelennaam en het typeveld:
$sharedFolders[7].split(' ')[0]
Backups
Je zou deze kunnen verwerken door een ForEach te gebruiken en wat voorwaardelijke logica. Het zou niet perfect zijn, maar het zou voor de meeste gevallen moeten werken.
Om het kort te houden, om alleen de bestandsnamen naar de console te sturen:
(net view \enetsqnap01) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } }