正在检索正在运行的进程的dll路径



我有一个使用.dll文件的应用程序,该文件有两个不同的位置,我需要找出它在200多台机器上使用的是哪一个。

我对powershell很陌生,尝试过Get-Process方法,但它没有提供我需要的信息,有其他方法可以在powershell中检索吗?

本文提供了一种使用WMI提供程序调用的方法。您可以在末尾使用提供的函数。如果你只是在寻找快速而肮脏的东西,这会奏效的。

再挖一点,这可能就是你想要的:

$modules = Get-Process | Where { $_.ProcessName -eq "process.name" } | Select Modules
$modules.Modules

将process.name替换为您的进程名称

进程的DLL包含在Get-Process返回的进程对象的Modules属性中。

Get-Process notepad| select -ExpandProperty modules| Format-Table -AutoSize

要查找特定的DLL,可以执行以下操作:

Get-Process chrome| 
    select -ExpandProperty modules|
    foreach { if($_.ModuleName -eq 'pdf.dll'){$_.Filename} }

由于可能有许多进程具有相同的名称,因此可以使用此名称仅显示不同的DLL位置:

Get-Process chrome| 
    select -ExpandProperty modules|
    where {$_.ModuleName -eq 'pdf.dll'}|
    group -Property FileName|
    select name

我不久前写了一篇关于如何查找由特定进程加载的DLL的文章。您可能可以调整此代码以查找特定的DLL。

http://trevorsullivan.net/2010/08/25/powershell-finding-currently-loaded-dlls/

最新更新