Es gibt nur eine mir bekannte Möglichkeit, Freigaben von der Kommandozeile aus aufzuzählen, und das ist mit 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.
Das ist für sich genommen nicht besonders gut zu parsen, aber Sie können es in ein Array werfen, um die Daten zeilenweise zu verarbeiten:
$sharedFolders = (NET.EXE VIEW \enetsqnap01)
Sie haben jetzt ein Array, und beginnend bei $sharedFolders[7]
haben Sie Ihre Freigaben. Sie könnten dann split
auf so etwas wie ein doppeltes Leerzeichen setzen - es ist unwahrscheinlich, dass es in einem Anteilsnamen selbst vorkommt, und sollte funktionieren, es sei denn, Ihr Anteilsname ist sehr lang und lässt nur ein einzelnes Leerzeichen zwischen dem Anteilsnamen und dem Typfeld:
$sharedFolders[7].split(' ')[0]
Backups
Sie könnten diese mit einem ForEach und etwas bedingter Logik verarbeiten. Es wäre nicht perfekt, aber es sollte für die meisten Anwendungsfälle funktionieren.
Der Einfachheit halber, um nur die Dateinamen auf der Konsole auszugeben:
(net view \enetsqnap01) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } }