【问题标题】:Get PID on remote computer via service name通过服务名称获取远程计算机上的 PID
【发布时间】:2018-08-28 02:28:17
【问题描述】:

我需要使用 PowerShell 为我正在创建的程序/脚本杀死远程计算机上服务背后的进程。

问题在于进程并不总是具有相同的 PID,并且名称也不总是相同。唯一始终相同的是名称。

我发现我可以用这个命令获取服务的PID:

taskkill /s rasmuspc /u rasmus123 /p 12345 /PID (Get-WmiObject Win32_Service|where{$_.Name -eq 'Spooler'}).ProcessID /F

我使用这个命令跳过tasklist,所以我可以让它自动化而不是手动查找和输入PID。

但是该命令只会从我自己的计算机上获取 PID,我看不到有没有办法在远程 PC 上获取服务的 PID,只知道服务的名称?

【问题讨论】:

  • 你试过Get-WmiObject -ComputerName remotepcname吗?
  • 你为什么不用Invoke-Command远程控制整个命令?
  • Mathias R. Jessen 是正确的。在您的 Get-WMI 命令中,您不会告诉 WMI 您要从哪台计算机获取 PID,因此它默认获取您运行命令的服务的 PID,而不是您要连接的服务器。
  • 谢谢 Mathias 和 Jeroen,它成功了。

标签: powershell


【解决方案1】:
Taskkill /s rasmuspc /u rasmus123 /p 12345 /PID (Get-WmiObject -CN $remotepcname -filter 'name="spooler"}).processID /F

感谢 Mathias R. Jessen,此命令有效。

【讨论】:

  • 向左过滤,向右格式化。 Get-WmiObject -CN $remotepcname -filter 'name="spooler"'
【解决方案2】:

tasklist /s 服务器名称。 这可用于获取远程服务器上运行的任务列表

【讨论】:

    【解决方案3】:

    试试这个

    Get-Process -ComputerName "ServerName" -Name notepad | stop-Process

    您需要能够在远程机器上停止进程

    【讨论】:

      【解决方案4】:

      在Powershell中杀死一个对应的进程,一行:

      Get-Process -PID (Get-WmiObject -CN $RemotePCName -filter 'name="spooler"' -Class Win32_service).processID | Stop-Process -Force
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 1970-01-01
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多