настоящее время у меня следующий запрос в PowerShell:Легче способ разбора «запроса пользователя» в PowerShell
query user /server:$server
который возвращает результат:
USERNAME SESSIONNAME ID STATE IDLE TIME LOGON TIME
svc_chthost 2 Disc 1:05 8/16/2016 12:01 PM
myusername rdp-tcp 3 Active . 8/29/2016 11:29 AM
В настоящее время я использую @(query user /server:$server).Count - 1
в качестве значения для представления количества зарегистрированных пользователей (это не очень, я знаю). Однако теперь я хотел бы получить информацию, такую как USERNAME
, ID
и LOGON TIME
для использования в других частях моего сценария.
Мой вопрос связан с более простым способом анализа информации выше, или, может быть, лучшим решением для моей проблемы все вместе: подсчет и сбор информации, связанной с входом в систему пользователей.
Я нашел другие решения, которые, кажется, работают лучше, но я уверен, что там должно быть более простым способом для выполнения этой задачи:
$ComputerName | Foreach-object {
$Computer = $_
try
{
$processinfo = @(Get-WmiObject -class win32_process -ComputerName $Computer -EA "Stop")
if ($processinfo)
{
$processinfo | Foreach-Object {$_.GetOwner().User} |
Where-Object {$_ -ne "NETWORK SERVICE" -and $_ -ne "LOCAL SERVICE" -and $_ -ne "SYSTEM"} |
Sort-Object -Unique |
ForEach-Object { New-Object psobject -Property @{Computer=$Computer;LoggedOn=$_} } |
Select-Object Computer,LoggedOn
}#If
}
catch
{
}
Я считаю, несколько странно, что я не могу найти решение «чистого Powershell». Кто-то еще нашел время, чтобы создать сценарий, чтобы сделать то, что вам нужно, но: https://gallery.technet.microsoft.com/scriptcenter/Get-UserSessions-Parse-b4c97837 – Poorkenny
Смотрите также: https: //sysadminasaservice.wordpress.com/2015/08/10/quser-and-powershell/ – sodawillow