我需要在某些存储中获取所有共享名称。
我正在使用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
这很好,但我只需要共享名称。 我需要帮助。 谢谢你!
答案 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