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

时间:2012-01-27 22:45:32

标签: scripting powershell batch-file

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

我非常擅长使用shell并尝试了Get-Process方法,但它没有提供我需要的信息,还有另一种方法可以在电源shell中检索它吗?

3 个答案:

答案 0 :(得分:3)

进程的DLL包含在Get-Process返回的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

答案 1 :(得分:2)

article提供了一种使用WMI提供程序调用的方法。您可以在最后使用提供的函数。如果你只是寻找快速和肮脏的东西,这将有效。

进一步挖掘,这可能是你想要的:

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

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

答案 2 :(得分:0)

我回过头来写了一篇关于如何查找特定进程加载的DLL的文章。您可以调整此代码以查找特定的DLL。

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