У багатьох випадках адміністратору потрібно обмежити доступ користувачів до RDP лише в робочі години та автоматично завершувати всі активні сесії ввечері. Це підвищує безпеку й дисципліну користувачів, а також звільняє ресурси сервера.
У цій статті ми розглянемо, як:
- дозволити RDP-підключення лише з **07:00 до 21:00**;
- автоматично завершувати всі сесії (крім адміністратора) о **21:00**;
- налаштувати це без Active Directory (на звичайному Windows Server).
---
## 🕒 Крок 1: Обмеження часу входу користувачів у Windows
Windows дозволяє задати час, коли користувач може виконувати логін (у тому числі через RDP).
### 📌 Приклад команди:
```
net user ІМ'Я_КОРИСТУВАЧА /time:Su-Sa,07:00-21:00
```
- `Su-Sa` — дні тижня (неділя–субота).
- `07:00-21:00` — час, коли дозволено логін.
> ⚠️ Якщо сервер не у домені (без AD), потрібно застосувати цю команду для кожного локального користувача.
---
## 🛠 Крок 2: Автоматизація для групи користувачів
Якщо потрібно задати обмеження одразу для всіх користувачів (крім `Administrator`), можна використати PowerShell:
```
$group = "Users"
$timeRestriction = "Su-Sa,07:00-21:00"
Get-LocalGroupMember -Group $group | Where-Object {
$_.ObjectClass -eq 'User' -and $_.Name -ne 'Administrator'
} | ForEach-Object {
$username = ($_.Name -replace "^.+\\", "")
Write-Host "Обмежуємо користувача $username до $timeRestriction"
net user "$username" /time:"$timeRestriction"
}
```
---
## ⏳ Крок 3: Автоматичне завершення RDP-сесій о 21:00
Щоб користувачі, які залогінилися до 21:00, не залишали відкритих сесій, налаштуємо автоматичний logoff.
### 📌 Скрипт `logoff_rdp.ps1`
```
quser | ForEach-Object {
if ($_ -match '^\s*(\S+)\s+(\d+)\s+') {
$username = $matches[1]
$sessionId = $matches[2]
if ($username -ne 'Administrator') {
Write-Host "Завершуємо сесію користувача $username (ID: $sessionId)"
logoff $sessionId
}
}
}
```
Збережіть файл у:
```
C:\scripts\logoff_rdp.ps1
```
---
## 📅 Крок 4: Планувальник завдань для logoff
Щоб скрипт виконувався автоматично щодня о 21:00:
1. Відкрийте **Task Scheduler** → `Create Task`.
2. **General**:
- Name: `Logoff RDP Sessions`
- ✅ Run whether user is logged on or not
- ✅ Run with highest privileges
3. **Triggers**:
- New → Daily → Start at `21:00`
4. **Actions**:
- Program/script: `powershell.exe`
- Arguments:
```
-ExecutionPolicy Bypass -File "C:\scripts\logoff_rdp.ps1"
```
5. **Conditions**:
- Зніміть галочки з «Start only if idle…» та «Start only if on AC power».
6. **Settings**:
- ✅ Allow task to be run on demand
- ✅ Run task as soon as possible after a scheduled start is missed
- ✅ Restart on failure (1 min, 3 attempts)
---
## 🎯 Результат
- Користувачі можуть підключатися до RDP лише з **07:00 до 21:00**.
- О **21:00** автоматично завершуються всі сесії, крім адміністратора.
- Сервер залишається чистим від «завислих» підключень.