Windows

如何斷開使用 PowerShell 訪問 Windows 共享文件夾的使用者

  • August 13, 2018

確定使用 PowerShell 訪問共享文件夾的使用者問題有一個很好的答案。從那繼續你如何斷開使用powershell腳本訪問共享的使用者。

有一個名為OpenFiles的 Windows 命令行實用程序,但我更喜歡 PowerShell / WMI 解決方案。

直到我找到一個 WMI(例如基於 Win32_ServerConnection 之類的東西)或 .NET 對象解決方案,它讓我可以將連接列表作為第一類對象處理而不是解析文本輸出,我已經提出了這個基於OpenFiles的解決方案效用。我相當擔心它很脆弱,並且根據不同的需求進行修改並不那麼明顯,但它目前似乎適用於我的狹窄場景。如果您需要對 openfiles /disconnect (/A /ID /OP) 使用不同的參數,我已經為輸出的其他部分保留了帶有命名擷取的正則表達式作為參考。

請注意,重複使用 Select-String 是我不完全理解的事情,但這與訪問命名擷取所必需的事實有關。有關詳細資訊,請參閱此帶有 Select-String發布的RegEx 命名組。如果有人可以告訴我如何更改它,我很高興!

$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 `"$_`"}

引用自:https://serverfault.com/questions/149880