繁体   English   中英

使用PowerShell远程仅杀死特定的命令提示符进程

[英]Kill only a specific Command Prompt Process Remotely with PowerShell

我正在尝试编写脚本以远程终止特定的命令提示符过程。 如果我在本地运行get-process,我可以看到可以通过在“ MainWindowTitle”字段中设置的内容来缩小CMD.exe进程的范围。

如果我使用Get-Process -computer name或CIMInstance,则字段“ MainTitleWindow”将返回为空白。

$ses = New-CimSession -ComputerName $computer -Credential $cred
$process = Get-CimInstance -ClassName CIM_process -CimSession $ses -filter "name = 'cmd.exe'"
$process | Select-Object name,MainWindowTitle
Remove-CimSession -CimSession $ses


name    MainWindowTitle
----    ---------------
cmd.exe

MSDN提取:

仅当流程具有图形界面时,流程才具有与之关联的主窗口。 如果关联的进程没有主窗口(因此MainWindowHandle为零),则MainWindowTitle为空字符串(“”)。

更多信息在这里

我试图与其他过程进行比较,但结果是相同的...

您可以解析tasklist命令的输出。 像这样:

$cmds = tasklist /v |
    Where-Object {$_ -like "cmd.exe*"} |
    ForEach-Object {
        New-Object -TypeName PSObject -Prop @{"ID"=[int]$_.Substring(30,5); `
                                              "Title"=$_.Substring(157)}
    }

$cmds

在此处输入图片说明

$ Process = Get-CimInstance CIM_Process -CimSession $ Ses | Where-Object {$ ProcessNames-包含$ _。Name}

使用此方法,您还可以获得ProcessID和ParentProcessID。 然后,您可以使用类似的命令来查找使用主脚本的ParentProcessID的CMD进程。 您必须同时关闭脚本的主要过程和命令提示符,否则脚本将继续运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM