以当前登录的用户(域和机)+状态PowerShell脚本看到(活动,空闲,远) [英] Powershell script to see currently logged in users (domain and machine) + status (active, idle, away)

查看:295
本文介绍了以当前登录的用户(域和机)+状态PowerShell脚本看到(活动,空闲,远)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一个简单的命令来查看关于服务器的用户登录。 我知道这一个:

I am searching for a simple command to see logged on users on server. I know this one :

Get-WmiObject -Class win32_computersystem

但是这不会给我我需要的信息。 它返回: 域 Manufactureer 模型 名称(机器名) PrimaryOwnerName TotalPhysicalMemory

but this will not provide me the info I need. It returns : domain Manufactureer Model Name (Machine name) PrimaryOwnerName TotalPhysicalMemory

我在Windows 2012服务器上运行的Powershell 3.0。

I run Powershell 3.0 on a Windows 2012 server.

此外

Get-WmiObject Win32_LoggedOnUser -ComputerName $Computer | Select Antecedent -Unique

让我没有确切的答案,我需要。 我很想看到还有空闲时间,或者如果他们主动或消失。

gives me not the exact answers I need. I would love to see as well the idle time, or if they are active or away.

推荐答案

有没有简单的命令来做到这一点。你可以写一个函数,或者把你所选择的几个是在不同的code库可在网上。我用这样的:

There's no "simple command" to do that. You can write a function, or take your choice of several that are available online in various code repositories. I use this:

function get-loggedonuser ($computername){

#mjolinor 3/17/10

$regexa = '.+Domain="(.+)",Name="(.+)"$'
$regexd = '.+LogonId="(\d+)"$'

$logontype = @{
"0"="Local System"
"2"="Interactive" #(Local logon)
"3"="Network" # (Remote logon)
"4"="Batch" # (Scheduled task)
"5"="Service" # (Service account logon)
"7"="Unlock" #(Screen saver)
"8"="NetworkCleartext" # (Cleartext network logon)
"9"="NewCredentials" #(RunAs using alternate credentials)
"10"="RemoteInteractive" #(RDP\TS\RemoteAssistance)
"11"="CachedInteractive" #(Local w\cached credentials)
}

$logon_sessions = @(gwmi win32_logonsession -ComputerName $computername)
$logon_users = @(gwmi win32_loggedonuser -ComputerName $computername)

$session_user = @{}

$logon_users |% {
$_.antecedent -match $regexa > $nul
$username = $matches[1] + "\" + $matches[2]
$_.dependent -match $regexd > $nul
$session = $matches[1]
$session_user[$session] += $username
}


$logon_sessions |%{
$starttime = [management.managementdatetimeconverter]::todatetime($_.starttime)

$loggedonuser = New-Object -TypeName psobject
$loggedonuser | Add-Member -MemberType NoteProperty -Name "Session" -Value $_.logonid
$loggedonuser | Add-Member -MemberType NoteProperty -Name "User" -Value $session_user[$_.logonid]
$loggedonuser | Add-Member -MemberType NoteProperty -Name "Type" -Value $logontype[$_.logontype.tostring()]
$loggedonuser | Add-Member -MemberType NoteProperty -Name "Auth" -Value $_.authenticationpackage
$loggedonuser | Add-Member -MemberType NoteProperty -Name "StartTime" -Value $starttime

$loggedonuser
}

}

这篇关于以当前登录的用户(域和机)+状态PowerShell脚本看到(活动,空闲,远)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆