1

问题

我正在编写 SolarWinds SAM 脚本,它可以监控远程机器上的登录用户。我想使用quser 而不是基于WMI/CIM 的解决方案,因为quser它提供了我正在寻找的数据。

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

代码

在没有凭据对象的情况下运行时,我得到以下信息。

quser /server:'testserver1'

输出

No User exists for *
4

1 回答 1

2

回答

一旦我意识到,这个困境的答案就非常明显了。您可以简单地使用带有and参数的Invoke-Commandcmdlet 在具有适当用户上下文的远程服务器上运行命令。-Credential-ScriptBlockquser

最后一点 - 如果您需要帮助将 的输出解析为对quserPowerShell 更友好的对象,请参阅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
于 2020-06-02T14:47:19.063 回答