私が知っているコマンドラインから共有をリモートで列挙する方法は1つしかありません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.
これ自体は特に解析できませんが、配列にスローして、データを1行ずつ処理できます。
$sharedFolders = (NET.EXE VIEW \\enetsqnap01)
これでアレイ$sharedFolders[7]
が作成され、共有が開始されました。それでsplit
、ダブルスペースのようなものに-そうは共有名自体に登場する、とあなたの共有名のみ共有名とタイプフィールドの間に単一のスペースを残して、非常に長いでない限り動作するはずです:
$sharedFolders[7].split(' ')[0]
Backups
ForEachと条件付きロジックを使用して、これらを処理できます。完璧ではありませんが、ほとんどのユースケースで機能するはずです。
簡潔にするために、単にファイル名をコンソールに出力するには:
(net view \\enetsqnap01) | % { if($_.IndexOf(' Disk ') -gt 0){ $_.Split(' ')[0] } }