如何使用 PowerShell 断开用户访问 Windows 共享文件夹的连接

Mar*_*rth 7 windows powershell network-share

访问共享文件夹中使用PowerShell确定用户问题有一个很好的答案。继续您如何断开使用 powershell 脚本访问共享的用户的连接。

有一个名为OpenFiles的 Windows 命令行实用程序,但我更喜欢 PowerShell / WMI 解决方案。

Mar*_*rth 5

直到我找到一个 WMI(例如基于 Win32_ServerConnection 之类的东西)或 .NET 对象解决方案,让我将连接列表作为第一类对象处理而不是解析文本输出,我已经提出了基于OpenFiles 的解决方案公用事业。我相当担心它是脆弱的,并且针对不同的需求进行修改并不那么明显,但目前它似乎适用于我的狭窄场景。如果您需要为 openfiles /disconnect (/A /ID /OP) 使用不同的参数,我将带有命名捕获的正则表达式保留为输出的其他部分作为参考。

请注意,重复使用 Select-String 是我不完全理解的事情,但与访问命名捕获所必需的事实有关。有关详细信息,请参阅此RegEx Named Groups with Select-String发布。如果有人可以告诉我如何更改它,我很乐意更改它!

$computerName = 'ServerName'
$pattern = '^.+ (?<FileId>\d+) (?<User>[^ ]+).+ (?<OpenFile>C:.+\\SpecificFolder\\.*)$'
$openfiles = openfiles /query /s $computerName /v | Select-String -Pattern $pattern | ForEach-Object {[void]($_.Line -match $pattern); $matches['OpenFile']}
$openfiles | Sort-Object -Unique | ForEach-Object { openfiles /disconnect /s $computerName /a * /op `"$_`"}
Run Code Online (Sandbox Code Playgroud)

  • 您应该将此答案标记为“已接受”。回答您自己的问题是可以接受的,甚至被鼓励。 (2认同)