Só há uma forma de enumerar acções remotamente a partir da linha de comando que conheço, e que é com 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.
Isto não é particularmente parsable por si só, mas, pode atirá-lo para um array para processar os dados linha a linha:
$sharedFolders = (NET.EXE VIEW \enetsqnap01)
Tem agora um array, e a partir de $sharedFolders[7]
tem as suas acções. Poderá então split
em algo como um espaço duplo - improvável que apareça no próprio nome da acção, e deverá funcionar a menos que o nome da sua acção seja muito longo, deixando apenas um único espaço entre o nome da acção e o campo de tipo:
$sharedFolders[7].split(' ')[0]
Backups
Poderá processá-los usando um ForEach e alguma lógica condicional. Não seria perfeito, mas deveria funcionar para a maioria dos casos de utilização.
Para uma maior brevidade, para apenas emitir os nomes dos ficheiros para a consola:
(net view \enetsqnap01) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } }