确定用户访问共享文件夹使用PowerShell问题有一个很好的答案。 从此继续如何断开使用PowerShell脚本访问共享的用户。
有一个名为OpenFiles的Windows命令行工具,但我更喜欢PowerShell / WMI解决scheme。
直到我find一个WMI(例如基于类似Win32_ServerConnection的东西)或.NET对象解决scheme,让我把连接列表作为第一类对象,而不是parsing文本输出,我提出了基于OpenFiles效用。 我非常担心它是脆弱的,并不是显而易见的修改不同的需求,但它似乎正在为我狭隘的情况目前的工作。 如果你需要为openfiles / disconnect(/ A / ID / OP)使用不同的参数,我已经将输出的其他部分的命名捕获保存为正则expression式的regex。
请注意,重复使用Select-String是我不完全理解的,但是这是为了访问命名的捕获所必需的。 有关详细信息,请参阅此RegEx带有selectstring的命名组 。 如果有人能告诉我如何改变它很高兴!
$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 `"$_`"}