远程计算机上的活动登录用户

2024-05-18

我正在使用下面的脚本来获取远程计算机上的登录用户。它工作正常,但我需要让用户处于“活动”状态

如何获取远程计算机上的活动登录用户?

function Global:Get-LoggedOnUser {
    #Requires -Version 2.0            
    [CmdletBinding()]            
     Param             
       (                       
        [Parameter(Mandatory=$false,
                   Position=0,                          
                   ValueFromPipeline=$true,            
                   ValueFromPipelineByPropertyName=$true)]            
        [String[]]$ComputerName = $env:COMPUTERNAME
       )#End Param

    Begin            
    {            
     Write-Host "`n Checking Users . . . "
     $i = 0
     $MyParams = @{
         Class       = "Win32_process" 
         Filter      = "Name='Explorer.exe'" 
         ErrorAction = "Stop"
        }
    }#Begin          
    Process            
    {
        $ComputerName | Foreach-object {
        $Computer = $_

        $MyParams["ComputerName"] = $Computer
        try
            {
                $processinfo = @(Get-WmiObject @MyParams)
                if ($Processinfo)
                    {    
                        $Processinfo | ForEach-Object { 
                            New-Object PSObject -Property @{
                                ComputerName=$Computer
                                LoggedOn    =$_.GetOwner().User
                                SID         =$_.GetOwnerSid().sid} } | 
                        Select-Object ComputerName,LoggedOn,SID
                    }#If
            }
        catch
            {
                "Cannot find any processes running on $computer" | Out-Host
            }
         }#Forech-object(ComputerName)       

    }#Process
    End
    {

    }#End

    }#Get-LoggedOnUsers

添加对 Win32_ComputerSystem 类的查询:

Get-WMIObject -Class Win32_ComputerSystem -Computername $Computer | Select UserName

这将获取“活跃”用户,然后您可以构建一个具有“活跃”布尔值的对象。

这是我的实现:

function Get-LoggedOnUser
{
    [CmdletBinding()]
    Param
    (
        [Parameter(Mandatory=$true,
                   Position=0,
                   ValueFromPipeline=$true,
                   ValueFromPipelineByPropertyName=$true)]
        [String[]]$ComputerName
    )
    Begin            
    {            
        $users = $null
        $return = @()
    }
    Process
    {
        ForEach($Computer in $ComputerName)
        {
            $activeUser = Get-WMIObject -class Win32_ComputerSystem -ComputerName $Computer -EA stop | select UserName
            Try
            {
                $processinfo = @(Get-WmiObject -class win32_process -ComputerName $Computer -EA "Stop")
                If ($processinfo)
                {    
                    ForEach($process in $processinfo)
                    {
                        [string[]]$users += $process.GetOwner().user| Where{($_ -ne "NETWORK SERVICE") -and ($_ -ne "LOCAL SERVICE") -and ($_ -ne "SYSTEM")}
                    }
                    If($Users)
                    { 
                        ForEach($user in ($Users | Select -unique))
                        {
                            If($ActiveUser.username -like "*$user")
                            {
                                $Return += New-Object PSObject -Property @{
                                            "User" = $user
                                            "Active" = $true
                                            "Computer" = $Computer
                                }
                            }
                            Else
                            {
                                $Return += New-Object PSObject -Property @{
                                            "User" = $user
                                            "Active" = $false
                                            "Computer" = $Computer
                                }
                            }
                        }
                    }
                    Else
                    {
                        "There are no users logged onto $computer" | Out-Host
                    }
                }
            }
            Catch
            {
                "Cannot find any processes running on $computer" | Out-Host
            }
        }
    }
    End
    {
        $Return
    }
}

值得指出的是,仅当用户在本地登录时才会填充 Win32_ComputerSystem 用户名,因此通过远程桌面登录的任何人都不会显示为“活动”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

远程计算机上的活动登录用户 的相关文章

随机推荐

  • Azure消息队列中的消息将直接进入Poison消息队列

    希望这可以节省某人一些时间 当移动到较新的版本时 下面的代码停止工作QueueClient https learn microsoft com en us dotnet api azure storage queues queueclien
  • 如何导出带有数据的 MySQL 架构?

    我有一个完整的架构 其中有许多表 其中包含 MySQL 查询浏览器中的数据 现在我想将这个包含所有表 数据的完整数据库发送给我的同事 我怎样才能将其发送给我的同事 以便他可以将这个完整的架构放入他的 MySQL 查询浏览器中 Thanks
  • SHACL 规则中的多路径和存在量化(我应该使用 sh:oneOrMorePath 吗?)

    我想了解如何处理 SHACL 规则中的多路径和存在量化 让我用一个示例本体来举例说明我的问题 本体包括 Approve Legal Result Man 和 Machine 类 所有类都是不相交的 它有两个属性 has theme 和 co
  • Django:使用条件 {% extends %} 使 {% block "div" %} 成为条件

    我想分享一个 AJAX 和常规 HTTP 调用之间的模板 唯一的区别是一个模板需要扩展 base html html 而另一个则不需要 我可以用 extends request is ajax yesno app base ajax htm
  • 使用 matplotlib 滑块小部件更改图像中的 clim

    我几乎没有使用 python 的经验 但我正在尝试创建一个简单的脚本 该脚本加载图像并使用滑块小部件来调整颜色条的最小值和最大值 并相应地重新绘制图像数据 我正在尝试遵循这个例子 http matplotlib sourceforge ne
  • LNK2028 托管 C++ DLL 在另一个托管 C++ DLL 中调用函数

    我正在将 VS2010 与托管 C DLL 一起使用 调用另一个托管 C DLL 中的函数 并且我得到了很多LNK2028 http msdn microsoft com en us library ms235590 28v vs 80 2
  • 在 Postgres 中存储加密数据 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要在 Postgres 中以加密形式存储某些数据 显然 我需要对其进行加密 存储 并且能够读取和解密 做这个的最好方式是什么 The bes
  • Bigquery 中数组对之间的余弦相似度

    我创建了一个表 其中有一对 ID 和每个 ID 的坐标 以便我可以计算它们之间的成对余弦相似度 The table looks like this 坐标的维度数当前为 128 但可能会有所不同 但同一个表中一对 ID 的数字维度始终相同 c
  • Snowflake 中的动态 SQL

    当我在雪花中运行动态 SQL 时 遇到以下错误 未完成对 SQL MAIN 的分配 因为值超出了变量的大小限制 它的大小是263 限制为 256 内部存储大小以字节为单位 这是代码 SET v G 1 SET v G1 v G VARCHA
  • 在 null laravel 上调用成员函数 save()

    大家好 我正在使用 laravel 5 多态关系将数据保存在数据库中 但我遇到了一些问题 当我尝试将数据保存在数据库中时 它会抛出此错误 对 null 调用成员函数 save 我不知道为什么我会遇到这个错误 我正在关注多态关系的本教程在 L
  • 使用 scikit-image 在 HSV 中进行颜色旋转

    目的是将纯红色图像转换为色轮的任何色调 A monochrome image is first converted into a RGB red image ex 然后转化为HSV 通过添加一个角度值来修改色调分量 与车轮颜色相匹配 然后将
  • 推入 UINavigationController 时隐藏 FBFriendPickerViewController 导航栏

    介绍一个实例FBFriendPickerViewController using presentViewController animated completion 非常简单 该类似乎是针对该用例的 但是 我想推送一个实例FBFriendP
  • 如何从本地运行的docker容器访问Azure Keyvault?

    我有一个包含 ASP NET Core 应用程序的 docker 映像 该应用程序使用 Azure Key Vault 来访问连接字符串等内容 当我在本地运行图像时 出现以下错误 Unhandled Exception Microsoft
  • python中如何对多个条件进行排序?

    我有一个包含子列表的列表 如下所示 result helo 10 bye 50 yeah 5 candy 30 我想用三个条件来排序 首先 按子列表索引 2 中的最高整数 然后按子列表索引 1 中单词的长度 最后按子列表第 1 个索引中的字
  • 如何在Netbeans中插入main方法(快捷方式)

    有时您想运行单个文件来快速测试某些代码 正在输入public static void main String args 每次都很乏味 怎样才能做得更快呢 由于 Netbeans 中预定义的代码模板 这很简单 只需输入psvm并按 Tab 键
  • Postgres JSONB:数组数组的 where 子句

    postgres 中有 v 9 5 如果有的话 create table json test id varchar NOT NULL data jsonb NOT NULL PRIMARY KEY id 其中 data 是 json 并且包
  • 找到线性规划的精确解

    我需要找到线性程序的精确实数解 其中所有输入都是整数 重要的是 求解器还将解输出为有理数 理想情况下无需使用浮点数执行任何中间步骤 GLPK 可以进行精确算术 但无法将解显示为有理数 即 1 3 得到 0 3333 我可能可以尝试猜测这意味
  • Python 是否有首选的 BDD 风格单元测试框架?

    我想知道是否有任何 BDD 风格的 描述它 Python 单元测试框架可以维护并准备好投入生产 我已经发现describe https pypi python org pypi describe 0 1 2 但似乎没有维护 也没有文档 我也
  • 当结果为空时 LINQ 返回什么

    我有一个关于 LINQ 查询的问题 通常查询返回一个IEnumerable
  • 远程计算机上的活动登录用户

    我正在使用下面的脚本来获取远程计算机上的登录用户 它工作正常 但我需要让用户处于 活动 状态 如何获取远程计算机上的活动登录用户 function Global Get LoggedOnUser Requires Version 2 0 C