SearchIndexer.exe
阻止了我的设备(实际上是我的外部硬盘)停止。
我尝试通过查看任务管理器来关闭该应用程序,但在“进程”选项卡上找不到它。
我可以通过名称查找该进程、获取进程 ID 并将其终止吗?
答案1
如果你正在寻找诸如 SearchIndexer 之类的进程 - 使用 PowerShell 应该很容易做到
Get-Process
将显示正在运行的进程列表。在本例中,我将其通过管道传输,Select -first 1
因为您感兴趣的是列标题,而不是我电脑上的 100 多个进程的列表:
接下来 - 现在您知道如何获取进程,您需要将其缩小到特定进程。下面,我展示了 4 种方法来执行此操作:
Get-Process Search*
将返回以搜索开头的所有进程
Get-Process SearchIndexer
如果存在,则只返回该进程
Get-Process | Where {$_.Name -eq "SearchIndexer"}
将找到所有进程,然后仅选择名为 SearchIndexer 的进程
Get-Process | Where {$_.ProcessName -Like "SearchIn*"}
将获取所有进程,并缩小到以“SearchIn”开头的进程。
附注:您可以在任一端使用通配符,因此`索引“还将返回您想要的进程。
现在 - 要终止该进程 - 将其通过管道传输到 Stop-Process: ..但是它不起作用!
要停止它 - 与某些进程一样 - 您需要以管理员身份运行 PowerShell: ..但您仍然会收到提示!
...忽略底部的错误,我们刚刚证明该过程不再存在
但我们不喜欢在一遍又一遍地尝试时出现错误: ...所以我们需要稍微不同地处理它。不是明确地停止一个进程,而是抓取所有进程,过滤出我们想要的进程(如果有的话),然后杀死它们(如果存在的话):
最后 - 将其添加为计划任务操作(如果需要),因为 Windows 喜欢重新启动某些服务/进程,然后一切就绪。
答案2
Get-Process 的替代方法:
Get-WmiObject Win32_Process | select commandline | Select-String -Pattern "SearchIndexer"