在我们深入研究并找到原因之后,我需要您的帮助来制作一个脚本来缓解问题的症状。
问题描述:我们有一个问题,其中dll被锁定,这将阻止IIS处理请求。有几个dll可能是问题所在。我们将它们映射为Windows Defender的例外,但问题仍然存在。
我们可以通过编写脚本来定期访问该网站来检测问题,如果该问题发生,该网站将停止运行。
这是在Windows 2016 Server上。
要求:显然,需要长期修复,我们正在努力解决。在找到该修补程序的同时,我们正在寻找一种方法来查找使用dll的进程并杀死该进程。
SysInternals ProcessExplorer可以识别正在访问dll文件的进程(这是双筒望远镜功能)。一旦知道了哪个进程,我们就可以在ProcessExplorer中终止该进程。
理想的解决方案是使用指定的dll名称搜索进程然后杀死它们的脚本。我想我们可以使用sysinternals的命令行实用程序,但不知道从哪里开始。
注意:理想情况下,我们将解决此问题,但此问题仍在持续,因此我们希望减轻症状。你们中的一些人可能会建议解决此问题,如果您有解决方案,则将其发送给我。与此同时,这里可能会问一些问题……是什么原因导致的问题-如果我们知道这一点……! Windows Defender签名更新运行后,似乎会出现此问题。就像Windows Defender重新启动以加载新的威胁特征时,内存中的dll以某种方式被视为威胁。这可能是一个真正的威胁-否,因为我们手动扫描了它,然后它变得干净了。
答案 0 :(得分:0)
您可以使用PowerShell。这是一个开始。
注意:
如果通用概念可以为您标识流程并且默认的“停止流程”适用于所涉及的流程,这将非常有用:
$ModulePathToFind = "C:\\Windows\\System32\\msxml6.dll"
$KillIt = $false
foreach ($p in Get-Process)
{
foreach ($m in $p.modules)
{
if ( $m.FileName -match $ModulePathToFind)
{
write-host "Found:" $m.FileName "in" $p.Name "ID:" $p.id
if ($KillIt)
{
write-host "In 'Kill' mode."
Stop-Process -Id $p.id -Force
}
else
{
write-host "Not in 'Kill' mode."
}
}
}
}