regex 使用powershell脚本+正则表达式识别网络共享[重复]

xmq68pz9  于 2023-06-25  发布在  Shell
关注(0)|答案(1)|浏览(129)

此问题已在此处有答案

List of all characters that should be escaped before put in to RegEx?(7个回答)
4天前关闭。
我试图运行一个脚本来识别网络共享,忽略一些默认共享,但我不明白为什么我下面的脚本不验证执行。你能帮我吗?
净份额|Where-Object {$_.ShareName -notmatch“^(C$|管理员$|打印$|联系我们|)

ycl3bljg

ycl3bljg1#

我建议从这个开始:

Get-SmbShare | Where-Object { $_.Name -notmatch "^(C\$|ADMIN\$)" }

如果它给出了比你想要的更多的项目,比如“D$”和“IPC$”,那么把它展开成这样:

Get-SmbShare | Where-Object { $_.Name -notmatch '^(C\$|ADMIN\$|D\$|IPC\$)' }

我不清楚在你的命令上下文中$HOME应该是什么。在Windows PowerShell中,$HOME的值为“C:\Users”,但我认为不应该有C:\Users\<UserName>$的共享名称。但是如果你确实想要这样,那么你必须将单引号改为双引号并添加它。
我的列表中没有PRINT$,但是如果你有它并且不想要它,那么也把它添加到-notmatch列表中。

**UPDATE:**当然,所有的物理盘都应该是<letter>$的格式,比如C$D$等...考虑到这一点,此版本使用\w来删除<letter>$的所有变体:

Get-SmbShare | Where-Object { $_.Name -notmatch "^(\w\$|ADMIN\$)" }

相关问题