<|im_start|>system
You are a helpful AI assistant.<|im_end|>
<|im_start|>user
Приветствую. Как на языке PowerShell узнать когда пользователь заходил в учётную запись на клиентской машине Windows и на серверной ?<|im_end|>
<|im_start|>assistant
Для клиентской машины Windows:
```powershell
Get-WinEvent -FilterHashtable @{Logname='Security';ID=4624;Date="01/01/2021 00:00:00"} | Where-Object {$_.Message -like "*$username*Logon Type: 2*"} | Select-Object TimeCreated, Message
```
Замените `01/01/2021 00:00:00` на дату и время, с которой вы хотите начать поиск. Замените `$username` на имя пользователя.

Для серверной машины Windows:
```powershell
Get-WinEvent -LogName Security | Where-Object {$_.ID -eq 4624 -and $_.Message -like "*$username*Logon Type: 2*"} | Select-Object TimeCreated, Message
```
Замените `$username` на имя пользователя. Этот код выдаст вам список всех событий входа в систему для указанного пользователя на серверной машине в журнале событий без фильтрации по дате и времени.<|im_end|>
<|im_start|>user
Есть альтернативные решения этой задачи?<|im_end|>
<|im_start|>assistant
Да, есть несколько альтернативных решений для получения информации о входах пользователей в PowerShell:

1. Использование командлета Get-WinEvent:
```
Get-WinEvent -FilterHashtable @{Logname='Security';ID='4624';StartTime=(Get-Date).AddDays(-1)} -ComputerName $SERVER | Select-Object -Property TimeCreated,Message
```
Эта команда извлекает события безопасности с идентификатором 4624 (который означает успешный вход в систему) за последние 24 часа на указанном сервере. Результатом будет список событий, содержащих информацию о времени входа пользователя в систему.

2. Использование командлета Get-CimInstance:
```
Get-CimInstance -ClassName Win32_LogonSession -ComputerName $SERVER | Select-Object -Property StartTime, UserName
```
Эта команда возвращает информацию о текущих сеансах входа в систему на указанном сервере, включая время начала сеанса и имя пользователя.

3. Использование командлета Get-EventLog:
```
Get-EventLog -LogName Security -InstanceId 4624 -After (Get-Date).AddDays(-1) -ComputerName $SERVER | Select-Object -Property TimeGenerated, Message
```
Эта команда извлекает события безопасности с идентификатором 4624 за последние 24 часа на указанном сервере и возвращает время входа пользователя в систему и сообщение с подробностями о входе. 

Каждое из этих решений может быть настроено и оптимизировано в зависимости от требуемой информации о входах пользователей.<|im_end|>