【发布时间】:2017-06-27 15:23:33
【问题描述】:
我将在用户框上运行一个脚本,该脚本在远程服务器上执行一些工作。但是,该用户将无权访问服务器,因此我将以具有权限的其他用户身份运行脚本。
我遇到的困难是我需要获取登录用户(框用户)的用户名和域以传递给服务器。有多种命令可以获取我需要的数据,但是当以不同用户身份运行 PowerShell ISE 时,它们都返回用户数据而不是登录用户数据。
我所说的一些命令:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$env:USERNAME
$env:USERDOMAIN
$(whoami)
似乎唯一能按我想要的方式工作的是:
query user
这将返回以下格式:
用户名 会话名 ID 状态 空闲时间 登录时间 >user1 sessionName 4 活动。 2017 年 6 月 22 日下午 2:56我的两个问题是:
- 是否也可以通过这种方式获取域?运行此命令时看不到它。
- 有没有办法从查询用户中获取用户名? 'active' 用户名的特异性如何?
【问题讨论】:
-
使用
$env:USERNAME和$env:USERDOMAIN有什么问题? -
我的猜测是他试图在另一个会话中确定用户的用户/域。
-
@thepip3r 嗯...从问题中我了解到有 2 个用户。但对我来说,让远程(服务器)会话查询本地(框)用户的信息似乎有点倒退;使用内置环境变量并将它们传递给远程执行的代码 - 作为脚本或函数参数会更有意义......(免责声明:我没有搞乱远程处理,所以可能会丢失一些东西)
-
我也不明白他在做什么,但这对我来说是最引人注目的部分,“我将以具有权限的不同用户身份运行脚本”。这意味着,用户将处于与脚本不同的会话中(并且可能在另一台计算机上)。可能是错的,但这是我的解释。
-
@gms0ulman 问题在于它返回的是运行 powershell 会话的用户的信息,而不是登录的用户
标签: powershell scripting