【问题标题】:How to use PowerShell get the start up account of a process?如何使用PowerShell获取进程的启动账号?
【发布时间】:2015-05-04 15:56:23
【问题描述】:

在 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。这对我来说有点奇怪。这是设计使然还是我在哪里错了?

【问题讨论】:

    标签: security powershell authentication process runas


    【解决方案1】:

    Get-process 有一个 -IncludeUserName 开关:

    get-process -IncludeUserName
    

    专门用于utility.exe:

    get-process utility -IncludeUserName
    

    【讨论】:

    • 我试过了,发现这只适用于 PowerShell 4.0。有没有办法在 PowerShell 3.0 中获取这些信息?
    • Briantist 的答案将在 v4 之前有效。就像我对它的评论一样。
    【解决方案2】:

    Tony Hinkle 的回答 (+1) 很好,也很简单,但确实需要提升。

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

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

    如果你可以提升,我推荐其他答案。

    【讨论】:

    • 获取 CIM 实例本身并没有什么问题,但这并不是必需的。 (gwmi win32_process -filter "name='utility.exe'").GetOwner().User
    • 感谢@EBGreen 和briantist。我更新了我的问题并添加了更多细节。你能帮忙看看吗?
    • 我只是用一个帐户运行了powershell,用runas作为另一个帐户运行记事本,然后使用上面的命令,看到它作为第二个帐户运行。我想知道 /netonly 参数是否与它有关。
    • 是的,/netonly 会导致您看到的内容。不带那个参数试试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多