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

时间:2018-10-16 13:20:40

标签: powershell command-prompt get-wmiobject

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

如果我使用Get-Process-计算机名或获得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

3 个答案:

答案 0 :(得分:1)

MSDN 提取:

  

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

更多信息here

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

答案 1 :(得分:0)

您可以解析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

enter image description here

答案 2 :(得分:0)

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

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