我将在用户框上运行脚本,该脚本在远程服务器上执行某些操作。但是,用户将无权访问服务器,因此我将以具有权限的不同用户身份运行脚本。
我遇到的困难是我需要获取登录用户(盒子用户)的用户名和域以传递给服务器。有各种命令可以获取我需要的数据,但是当以不同用户身份运行 PowerShell ISE 时,它们都会返回用户数据而不是登录用户数据。
我说的一些命令:
[System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$env:USERNAME
$env:USERDOMAIN
$(whoami)
唯一似乎按照我想要的方式工作的是:
query user
这将返回以下格式:
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME >user1 sessionName 4 Active . 6/22/2017 2:56 PM
我的两个问题是:
- 是否也可以通过这种方式获取域名?我在运行此命令时没有看到它。
- 有没有办法从查询用户中获取用户名? “事件”用户名的具体情况如何?
最佳答案
查询活跃用户:
query user | Select-String '^>(\w+)' | ForEach-Object { $_.Matches[0].Groups[1].Value }
这取决于不包含空格的用户名。将 /server
参数添加到 query
命令以查询远程计算机。
关于powershell - 如何使用 'query user' 获取事件用户用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44784137/