问题
我正在编写 SolarWinds SAM 脚本,它可以监控远程机器上的登录用户。我想使用quser
而不是基于WMI/CIM 的解决方案,因为quser
它提供了我正在寻找的数据。
关键是监控应用程序提供了一个PSCredential
对象来使用,以便与远程机器进行身份验证,这是quser
无法使用的。
代码
在没有凭据对象的情况下运行时,我得到以下信息。
quser /server:'testserver1'
输出
No User exists for *
我正在编写 SolarWinds SAM 脚本,它可以监控远程机器上的登录用户。我想使用quser
而不是基于WMI/CIM 的解决方案,因为quser
它提供了我正在寻找的数据。
关键是监控应用程序提供了一个PSCredential
对象来使用,以便与远程机器进行身份验证,这是quser
无法使用的。
在没有凭据对象的情况下运行时,我得到以下信息。
quser /server:'testserver1'
No User exists for *
一旦我意识到,这个困境的答案就非常明显了。您可以简单地使用带有and参数的Invoke-Command
cmdlet 在具有适当用户上下文的远程服务器上运行命令。-Credential
-ScriptBlock
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