我有一个使用.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/