Как проверить отсутствие вошедших в систему пользователей в Win10

Как проверить отсутствие вошедших в систему пользователей в Win10

Когда пользователь вошел в систему, он может легко использовать quser.exe, чтобы увидеть всех вошедших в систему пользователей.

Я хочу запустить запланированную задачу (работая как SYSTEM) в разное время, и одна функция в скрипте может сделать что-то, что может запустить перезагрузку. Таким образом, перед запуском этой функции мне нужно сначала проверить, вошли ли в систему какие-либо пользователи.

В Win7 я проверял вывод:

quser.exe 2>&1

для строки "No user exist", и это отлично работает. Однако в Win10 это не работает.

Вывод той же команды в Win10, когда никто не вошел в систему, кажется пустым/пустым. Пустое значение кажется рискованным для тестирования, поскольку существует множество возможных источников ошибок для пустой строки, что приводит к тому, что пользователь сталкивается с неожиданной перезагрузкой. Я не могу использовать уведомление и обратный отсчетчтобы предупредить пользователя.

Есть ли какой-либо другой (разумеется, автоматизированный) способ проверить, что в данный момент ни один пользователь не вошел в систему?

решение1

Вместо использования quser(т.е. запроса пользователя) и полагаясь на допустимый пустой возврат, лучшим решением, по-видимому, будет использование qwinsta(т.е. запроса сеансов).

По сути, запрос всех сеансов и разбор возврата на предмет имен пользователей. Сеансы, запущенные под службами или SYSTEM, не имеют имени пользователя. Так что в PowerShell:

$qwinstaOut = & "$env:windir\system32\QWinSta.exe"
if (-not $qwinstaOut) {
   $UserSessions = "unknown"
} else {
   $UserSessions = $qwinstaOut[1..($qwinstaOut.count-1)] | % {$_.substring(19)} | ? {$_ -match "^\w"}
}
# If there are no sessions with a username, this must be running as SYSTEM
if (-not $UserSessions) {
...

Если переменная $userSessionsпустая, то пользователи не вошли в систему. Если она не пустая, то либо пользователи вошли в систему, либо произошла ошибка. Не идеально, но безопаснее.

Связанный контент