繁体   English   中英

带有新对象的 Quser (Powershell)

[英]Quser with New-Object (Powershell)

我的团队目前正在将 DHCP 迁移到新的 Azure 服务器,当我们切换特定的 scope 时,我们会在重新启动之前手动检查是否有任何用户登录到租用 IP 内的桌面。

我拼凑了 2 个脚本来帮助自动检查登录用户。 第一个成功检索特定 scope 中租用 IP 的主机名,然后将它们导出到 txt。

第二个使用自定义 object 中的quser命令从脚本 1 的结果中查询主机,这就是我遇到的麻烦。 我以为我会使用New-object来检索用户,但与为每个有问题的服务器手动运行quser命令相比,结果看起来不正确或似乎缺少数据。

本质上,我正在寻找一种更好的方法来检索登录用户,结果显示服务器名称,如果用户登录,用户名是什么(与运行 quser 命令相同的信息)。


Function Get-File($initialDirectory) {   
 [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") |
 Out-Null

 $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
 $OpenFileDialog.initialDirectory = $initialDirectory
 $OpenFileDialog.filter = "All files (*.*)| *.*"
 $OpenFileDialog.ShowDialog() | Out-Null
 $OpenFileDialog.filename
}

$scopeservers = Get-File
$servers = Get-Content $scopeservers

foreach ($server in $servers) {$properties = @{
                                               Server = $server
                                               LoggedInUsers = quser /server:$server
                                              } 

                               $o = New-Object psobject -Property $properties; $o
                               }

或者,我尝试使用Get-CimInstanceGet-WmiObject ,但我得到的只是这些命令的“RPC SErver Unavailable”错误。

任何帮助是极大的赞赏。

能够使用Invoke-Command在远程计算机上运行脚本块来登录用户。

foreach ($server in $servers) {Invoke-Command -ComputerName $server -ScriptBlock {$env:COMPUTERNAME; quser}
                               write-host " "}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM