您可以 运行 使用 PSCredential 对象进行 quser 吗?

Can you run quser with a PSCredential object?

问题

我正在编写 SolarWinds SAM 脚本,它可以监控远程计算机上的登录用户。我想使用 quser 而不是 WMI/CIM based solution 因为 quser 提供了我正在寻找的数据。

关键是监控应用程序提供了一个 PSCredential 对象来使用远程机器进行身份验证,这是 quser 无法使用的。

代码

当 运行 没有凭据对象时,我得到以下信息。

quser /server:'testserver1'

输出

No User exists for *

回答

当我意识到这一难题时,答案就显而易见了。您可以简单地使用带有 -Credential-ScriptBlock 参数的 Invoke-Command cmdlet 来 运行 具有适当用户上下文的远程服务器上的 quser 命令。

最后一点 - 如果您需要帮助将 quser 的输出解析为对 PowerShell 更友好的对象,请参阅 Get-LoggedOnUser。这是一个很棒的脚本,可以处理从 quser 输出中获取属性所需的所有字符串解析。

代码

$Server = 'testserver1'
$Credential = Get-Credential
Invoke-Command -ComputerName $Server -ScriptBlock { quser } -Credential $Credential

输出

 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
 a-srz                 rdp-tcp#0           2  Active         19  6/2/2020 10:19 AM