【发布时间】:2012-01-27 22:45:32
【问题描述】:
我有一个使用 .dll 文件的应用程序,该文件有 2 个不同的位置,我需要找出它在 200 多台机器上使用的位置。
我对 power shell 很陌生,并且尝试过 Get-Process 方法,但它没有提供我需要的信息,是否有另一种方法可以在 power shell 中检索它?
【问题讨论】:
标签: scripting powershell batch-file
我有一个使用 .dll 文件的应用程序,该文件有 2 个不同的位置,我需要找出它在 200 多台机器上使用的位置。
我对 power shell 很陌生,并且尝试过 Get-Process 方法,但它没有提供我需要的信息,是否有另一种方法可以在 power shell 中检索它?
【问题讨论】:
标签: scripting powershell batch-file
article 提供了一种使用 WMI 提供程序调用的方法。您可以在最后使用提供的功能。如果您只是在寻找快速而肮脏的东西,这会起作用。
再深入一点,这可能就是你想要的:
$modules = Get-Process | Where { $_.ProcessName -eq "process.name" } | Select Modules
$modules.Modules
将 process.name 替换为您的进程名称
【讨论】:
进程的 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
【讨论】:
不久前我写了一篇关于如何查找由特定进程加载的 DLL 的文章。您可能可以修改此代码以找到您的特定 DLL。
http://trevorsullivan.net/2010/08/25/powershell-finding-currently-loaded-dlls/
【讨论】: