Chỉ có một cách liệt kê các chia sẻ từ xa từ dòng lệnh mà tôi biết và đó là 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.
Bản thân nó không đặc biệt có thể phân tích được, nhưng, bạn có thể ném nó vào một mảng để xử lý từng dòng dữ liệu:
$sharedFolders = (NET.EXE VIEW \\enetsqnap01)
Bây giờ bạn có một mảng, và bắt đầu từ $sharedFolders[7]
bạn có cổ phần của bạn. Sau đó, bạn có thể split
trên một cái gì đó như một không gian kép - không thể xuất hiện trong tên chia sẻ và sẽ hoạt động trừ khi tên chia sẻ của bạn rất dài, chỉ để lại một khoảng trắng giữa tên chia sẻ và trường loại:
$sharedFolders[7].split(' ')[0]
Backups
Bạn có thể xử lý chúng bằng cách sử dụng ForEach và một số logic có điều kiện. Nó sẽ không hoàn hảo, nhưng nó sẽ hoạt động trong hầu hết các trường hợp sử dụng.
Để đơn giản, chỉ cần xuất tên tệp vào bảng điều khiển:
(net view \\enetsqnap01) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } }