我有一个使用.dll文件的应用程序,该文件有2个不同的位置,我需要找出它在200多台机器上使用的位置。
我非常擅长使用shell并尝试了Get-Process方法,但它没有提供我需要的信息,还有另一种方法可以在电源shell中检索它吗?
答案 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/