Sólo hay una forma de enumerar acciones remotamente desde la línea de comandos que yo conozca, y es con 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.
Esto no es particularmente analizable por sí mismo, pero, puede lanzarlo en un array para procesar los datos línea por línea:
$sharedFolders = (NET.EXE VIEW \enetsqnap01)
Ahora tiene un array, y empezando en $sharedFolders[7]
tiene sus acciones. Podría entonces split
en algo como un doble espacio - que es poco probable que aparezca en un nombre de acción en sí mismo, y debería funcionar a menos que su nombre de acción sea muy largo, dejando sólo un único espacio entre el nombre de la acción y el campo de tipo:
$sharedFolders[7].split(' ')[0]
Backups
Podría procesar estos usando un ForEach y algo de lógica condicional. No sería perfecto, pero debería funcionar para la mayoría de los casos de uso.
Para ser más breve, sólo hay que enviar los nombres de los archivos a la consola:
(net view \enetsqnap01) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } }