PowerShell命令修改需求:排除以$结尾的共享目录
排除以$结尾的共享目录的PowerShell命令修改方案
原命令可以抓取所有磁盘共享(包括C$、Admin$这类带$的隐藏共享),要排除所有名称以$结尾的共享,直接修改正则和筛选逻辑即可,提供两种可行方案:
方案一:新增排除条件筛选
net view \\computername /all 2>&1 | Select-Object -Skip 1 | Where-Object {$_ -match 'Disk' -and $_ -notmatch '^\S+\s+\$'} | ForEach-Object {$_ -match '^(.+?)\s+Disk'; $matches[1].Trim()}
修改说明:
- 原筛选条件替换为
Where-Object {$_ -match 'Disk' -and $_ -notmatch '^\S+\s+\$'},新增的-notmatch '^\S+\s+\$'专门排除共享名称以$结尾的条目(net view输出里带$的共享格式是共享名$ Disk,这个正则匹配开头的非空格字符+空格+$的结构) - 提取名称时用
.Trim()清理多余空格,避免结果带无效空格
方案二:用正则直接匹配目标共享
net view \\computername /all 2>&1 | Select-Object -Skip 1 | Where-Object {$_ -match '^(.+?[^$])\s+Disk'} | ForEach-Object {$matches[1].Trim()}
修改说明:
- 把筛选和名称提取的逻辑合并到一个正则里:
^(.+?[^$])\s+Disk,其中[^$]确保捕获的共享名称最后一位不是$,直接过滤掉带$的共享 - 同样用
.Trim()清理捕获结果的空格,得到整洁的共享名称
内容的提问来源于stack exchange,提问作者Biswa
相关产品推荐
相关产品推荐

