如何使用PowerShell获取进程的启动帐号?
How to use PowerShell get the start up account of a process?
在 windows 上,我可以使用 runas
到 运行 应用程序作为另一个帐户(不是您目前登录的帐户),如下所示:
runas /netonly /user:some_domain\account "utility.exe"
如何从 PowerShell 获取此 some_domain\account
?我检查了 Get-Process 和 win32_process
WMI class 但没有发现任何有用的东西。
更新
回复@briantist 的回答:
我对@briantist 的回答结果有些困惑。我使用本地帐户(我的计算机不在域中)和 runas
实用程序(SQL Server management studio aka SSMS)作为域帐户登录到我的计算机。当我 运行 @briantist 提供的脚本时,结果只显示 SSMS 运行 在我的本地帐户而不是域帐户上运行。但在 SSMS 中,我可以使用函数 suser_sname()
来询问服务器我是谁,结果是 some_domain\account
。这对我来说有点奇怪。这是设计使然还是我哪里错了?
Get 进程有一个 -IncludeUserName 开关:
get-process -IncludeUserName
专门针对utility.exe:
get-process utility -IncludeUserName
Tony Hinkle 的回答 (+1) 很好,也很简单,但确实需要提升。
要以非特权用户身份执行此操作,您可以使用 CIM:
Get-CimInstance Win32_Process -Filter "name='utility.exe'" | Invoke-CimMethod -MethodName GetOwner
如果你可以提升,我推荐其他答案。
在 windows 上,我可以使用 runas
到 运行 应用程序作为另一个帐户(不是您目前登录的帐户),如下所示:
runas /netonly /user:some_domain\account "utility.exe"
如何从 PowerShell 获取此 some_domain\account
?我检查了 Get-Process 和 win32_process
WMI class 但没有发现任何有用的东西。
更新
回复@briantist 的回答:
我对@briantist 的回答结果有些困惑。我使用本地帐户(我的计算机不在域中)和 runas
实用程序(SQL Server management studio aka SSMS)作为域帐户登录到我的计算机。当我 运行 @briantist 提供的脚本时,结果只显示 SSMS 运行 在我的本地帐户而不是域帐户上运行。但在 SSMS 中,我可以使用函数 suser_sname()
来询问服务器我是谁,结果是 some_domain\account
。这对我来说有点奇怪。这是设计使然还是我哪里错了?
Get 进程有一个 -IncludeUserName 开关:
get-process -IncludeUserName
专门针对utility.exe:
get-process utility -IncludeUserName
Tony Hinkle 的回答 (+1) 很好,也很简单,但确实需要提升。
要以非特权用户身份执行此操作,您可以使用 CIM:
Get-CimInstance Win32_Process -Filter "name='utility.exe'" | Invoke-CimMethod -MethodName GetOwner
如果你可以提升,我推荐其他答案。