净视图 - 获取Just'Share Name'

时间:2016-07-31 19:58:03

标签: powershell

我需要在某些存储中获取所有共享名称。 我正在使用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. ,它以表格形式显示结果:

/Users

这很好,但我只需要共享名称。 我需要帮助。 谢谢你!

2 个答案:

答案 0 :(得分:4)

以下是使用网络视图输出的一种方法:

(net view $StorageName | Where-Object { $_ -match '\sDisk\s' }) -replace '\s\s+', ',' | ForEach-Object{ ($_ -split ',')[0] }

基本上就是说要查找磁盘被空格包围的行,以防万一其他人可能在名称中有磁盘。然后用逗号替换多个空格。然后,对于每一行,再用逗号分割并取第一个值作为共享名称。

如果您使用的是Windows 8/2012或更高版本的系统(并尝试枚举其他Windows系统上的共享),则可以使用CIM会话以及Get-SmbShare而不是net view,这会将结果作为对象返回允许您以本机PowerShell方式选择所需的字段。

例如:

$cimSession = New-CimSession $StorageName
Get-SmbShare -CimSession $cimSession | Select Name

Name
----
Admin
ADMIN$
C$
IPC$
J$
print$
Public
Software

答案 1 :(得分:0)

解析依赖于定位而非正则表达式匹配的网络视图输出的另一个选项。我个人认为它更容易阅读,同样可靠。

apple
orange
banana