Powershell中的定影器等效?

fuser equivalent in Powershell?

我想删除一个目录,但是一个进程正在使用它。

 mv : Access to the path 'C:\Users\mike\Documents\myapp\node_modules\' is denied.

Explorer 提到目录正在使用中。是否有 Windows Powershell 等同于 fuser

请注意,这是一个 powershell 问题。我不想启动 GUI 应用程序。

试试这个:

$lockedFolder="C:\Windows\System32"
Get-Process | %{$processVar = $_;$_.Modules | %{if($_.FileName -like "$lockedFolder*"){$processVar.Name + " PID:" + $processVar.id}}}

这将查找文件夹中 运行 的每个进程。 (或在子目录中)

使用此脚本,您将获得更多信息:

$lockedFolder="C:\Windows\System32" 
Get-Process | %{$processVar = $_;$_.Modules | %{if($_.FileName -like "$lockedFolder*"){$processVar.Name + " PID:" + $processVar.id + " FullName: " + $_.FileName }}}

我认为没有与 fuser 等效的工具,但是必须先安装一个名为 handle.exe 的工具。

PowerShell script to check an application that's locking a file?

这是@Eldo.Ob 处理相关文件的优秀答案的修改版本。

function fuser($relativeFile){
  $file = Resolve-Path $relativeFile
  foreach ( $Process in (Get-Process)) {
    foreach ( $Module in $Process.Modules) {
      if ( $Module.FileName -like "$file*" ) {
        $Process | select id, path
      }
    }
  }
}

正在使用:

> fuser .\node_modules\

  Id Path
  -- ----
2660 C:\Program Files\nodejs\node.exe