如何使用PowerShell获取进程的启动帐户?

时间:2015-05-04 15:56:23

标签: security powershell authentication process runas

在Windows上,我可以使用runas将应用程序作为另一个帐户运行(不是您当前登录的帐户),如下所示:

runas /netonly /user:some_domain\account "utility.exe"

如何从PowerShell获取此some_domain\account?我已经检查了Get-Process和win32_process WMI类,但没有找到任何有用的东西。

更新

回复@briantist的回答: 我对@briantist的回答结果有点困惑。我使用本地帐户(我的计算机不在域中)和runas实用程序(SQL Server管理工作室,也称为SSMS)作为域帐户登录到我的计算机。当我运行@briantist提供的脚本时,结果只显示SSMS正在我的本地帐户上运行而不是域帐户。但在SSMS中,我可以使用函数suser_sname()向服务器询问我是谁,结果是some_domain\account。这对我来说有点奇怪。这是设计还是我错了?

2 个答案:

答案 0 :(得分:2)

Get-process有一个-IncludeUserName开关:

get-process -IncludeUserName

专门针对utility.exe:

get-process utility -IncludeUserName

答案 1 :(得分:1)

Tony Hinkle的答案(+1)非常棒,非常简单,但确实需要提升。

要以非特权用户身份执行此操作,您可以使用CIM:

Get-CimInstance Win32_Process -Filter "name='utility.exe'" | Invoke-CimMethod -MethodName GetOwner

如果你能提升,我建议另外给出答案。