首页 > 解决方案 > 是否可以与正在运行的服务建立关联并通过 powershell 进行处理?

问题描述

是否可以与正在运行的服务建立关联并通过 powershell 进行处理?如何在哈希表中进行关联,例如 @{ service1 = process1 ; 服务 2 = 进程 1 }

标签: powershell

解决方案


我不确定这是否是您要查找的内容,因为您只是在要求并且ServiceProcess假设您只想要他们的Names。所以这是你可以做到的一种方法:

$map = @{}

Get-CimInstance win32_service | Group-Object ProcessID |
ForEach-Object {
    
    $proccess = Get-Process -ID $_.Name
    
    foreach($service in $_.Group.Name)
    {
        if($map.ContainsKey($service))
        {
            $map[$service].Add($process.Name)
            continue
        }

        $map.Add($service,$proccess.Name)
    }
}

用法与任何其他hashtable一样,您提供Service Nameas 键,它将返回关联Process Name的 as 值:

PS /> $map[($map.Keys|Get-Random)]
lsass

PS /> $map[($map.Keys|Get-Random)]
SearchIndexer

PS /> $map[($map.Keys|Get-Random)]
Idle

PS /> $map[($map.Keys|Get-Random)]
svchost

推荐阅读