【问题标题】:Check to see if a process is running in the current user session检查当前用户会话中是否有进程正在运行
【发布时间】:2013-01-15 17:11:11
【问题描述】:

我需要帮助创建一个查找正在运行的进程的 powershell 脚本,如果它不存在则启动它。现在,我拥有的 VB 脚本会查找进程并启动,但由于 Windows 7 快速用户切换,该进程可以在任何用户会话中运行,它使脚本认为它在当前用户会话中运行。非常感谢任何帮助或指示!

【问题讨论】:

  • 您是否需要支持 Windows 服务器,单个用户可能有多个会话?

标签: windows powershell process windows-7-x64


【解决方案1】:

比较简单的代码:

if (
    Get-WmiObject -Class Win32_Process -Filter "Name = 'explorer.exe'" | 
        where { 
            $_.GetOwner().User -eq $env:USERNAME 
        }
    ) { 
    "explorer is running for $env:username" 
}

这应该忽略为当前用户以外的任何其他用户运行的这个进程。只需将 explorer.exe 替换为实际进程并更改逻辑以满足您的需要。

【讨论】:

  • 谢谢 BartekB!这看起来是一个好的开始,它只有在进程已经运行时才有效,如果不是,它不会做任何事情。如果它尚未在当前用户下运行,我也需要它来启动它。
  • 好吧...添加 else { start processname.exe } 就可以了... :)
  • 如果它必须在一个用户可以有多个会话的 Windows Server 上工作怎么办?有什么方法可以获取进程正在运行的会话吗?
猜你喜欢
  • 2011-06-30
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多