您可以 运行 使用 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
问题
我正在编写 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