fa
Feedback
Системный Администратор Windows

Системный Администратор Windows

رفتن به کانال در Telegram

🖥️ Windows для системных администраторов: управление, оптимизация, безопасность. Полезные советы, лайфхаки, PowerShell-скрипты, автоматизация и практические решения для работы с серверами и рабочими станциями. Авторский канал.

نمایش بیشتر
3 096
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-47 روز
+230 روز
آرشیو پست ها
👋 Всем админам доброго раннего утра! Сегодня коротко и по делу, что включить в Audit Policy, чтобы отслеживать все подключения по RDP. Без нужных политик никакой логгер не поможет. 🎯 Включаем аудит входа и сетевых логинов:

AuditPol /set /subcategory:"Logon" /success:enable /failure:enable
AuditPol /set /subcategory:"Logoff" /success:enable
AuditPol /set /subcategory:"Special Logon" /success:enable
AuditPol /set /subcategory:"Logon with explicit credentials" /success:enable /failure:enable
📝 После этого в логе Security начнут появляться события: - 4624 - Успешный вход (в том числе по RDP - Logon Type 10) - 4625 - Неудачный вход (ошибка пароля, нет такой учётки и т.п.) - 4634 - Выход из системы - 4778 и 4779 - Подключение и отключение от RDP-сессии 📌 Также полезно включить аудит групповой политики:

AuditPol /set /subcategory:"Other Logon/Logoff Events" /success:enable /failure:enable
👉 @win_sysadmin

📕 Контейнеризация в Windows Server для системных администраторов, инженеров технической поддержки и начинающих IT-специалист
📕 Контейнеризация в Windows Server для системных администраторов, инженеров технической поддержки и начинающих IT-специалистов. На открытом уроке 22 октября в 20:00 мск мы разберем как использовать контейнеры в Windows Server. 📗 На вебинаре вы: 1. Узнаете, как использовать контейнеризацию для повышения гибкости и управляемости серверной инфраструктуры. 2. Освоите базовые команды и подходы к управлению контейнерами. 📘 В результате на практике развернете свой первый контейнер с помощью Docker и поймете принципы работы контейнеров в Windows Server. 👉 Регистрация и подробности о курсе Администратор Windows: https://vk.cc/cQwN9r Все участники открытого урока получат скидку на курс "Администратор Windows" Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

👋 Привет, админы! Если вдруг замечаете странную активность по RDP - сессии отваливаются, логов много, сервер грузится - самое время проверить, кто брутфорсит. Вот быстрый способ вытащить неудачные попытки входа по RDP через события:

Get-WinEvent -FilterHashtable @{
    LogName = 'Security'
    Id = 4625
} | Where-Object {
    $_.Properties[10].Value -eq '10' # Logon Type 10 = RDP
} | Select-Object TimeCreated,
                      @{Name='Username';Expression={$_.Properties[5].Value}},
                      @{Name='IP';Expression={$_.Properties[18].Value}} |
Sort-Object TimeCreated -Descending | Select-Object -First 20
📌 Покажет: - когда была попытка - откуда (IP) - под каким логином пытались зайти 👮‍♂️ Можно быстро зафайрволить источник, добавить в blacklist или передать в SIEM. 🛡️ Плюс к этому — рекомендую включить защиту учётных записей от перебора пароля:

net accounts /lockoutthreshold:5 /lockoutduration:15 /lockoutwindow:15
👉 @win_sysadmin

👋 Привет, админы! Сегодня покажу, как отключить автоматический вход в Windows, если его кто-то однажды настроил (и забыл). 🔧 Всё просто - правим те же ключи в реестре:

$RegPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
Set-ItemProperty -Path $RegPath -Name "AutoAdminLogon" -Value "0"
Remove-ItemProperty -Path $RegPath -Name "DefaultPassword" -ErrorAction SilentlyContinue
Если хотите полностью зачистить следы, можно ещё убрать DefaultUsername и DefaultDomainName, особенно если вход теперь идёт по другим учеткам или через домен:

Remove-ItemProperty -Path $RegPath -Name "DefaultUsername" -ErrorAction SilentlyContinue
Remove-ItemProperty -Path $RegPath -Name "DefaultDomainName" -ErrorAction SilentlyContinue
🎯 После этого автологин не будет срабатывать, и пользователь снова увидит окно входа. Если нужно массово проверить, включен ли автологин на серверах, можно пробежаться скриптом по списку машин и вытащить AutoAdminLogon:

Invoke-Command -ComputerName (Get-Content servers.txt) -ScriptBlock {
    Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" -Name "AutoAdminLogon"
}
👉 @win_sysadmin

Нам ваш заморский AI нафиг не нужон! Сами сделаем свой AI на бесплатном вебинаре «On-prem LLM – свой распределённый AI-класте
Нам ваш заморский AI нафиг не нужон! Сами сделаем свой AI на бесплатном вебинаре «On-prem LLM – свой распределённый AI-кластер за 2 часа». 📍На вебинаре узнаете: 1. как запускать крупные языковые модели без внушительных бюджетов.  2. как организовать эффективный и масштабируемый инференс, не переплачивая за инфраструктуру.  3. как подключить удобный веб-интерфейс (OpenWebUI) и обеспечить безопасность через CDN/WAF.  После вебинара поймете, что выделить домашний кластер под серьёзные AI-задачи — вполне реальная и захватывающая  авантюра. Спикеры: 🔝 Подмосковный Александр, менеджер продукта по направлению ML/AI/GPU в компании «Флант» 🔝 Виталий Лихачев, SRE в крупном нидерландском тревелтехе 📅23 октября в 19:00 Регистрация на вебинарпо ссылке 👈

👋 Привет, админы! Нужно было настроить автологин для одного стендового сервера в изолированной сети - без домена, без пользователей, просто чтобы поднимался нужный софт после перезагрузки. Решается это через редактирование реестра:

$RegPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
Set-ItemProperty -Path $RegPath -Name "AutoAdminLogon" -Value "1"
Set-ItemProperty -Path $RegPath -Name "DefaultUsername" -Value "UserName"
Set-ItemProperty -Path $RegPath -Name "DefaultPassword" -Value "UserPassword"
Set-ItemProperty -Path $RegPath -Name "DefaultDomainName" -Value "$env:COMPUTERNAME"
⚠️ Обратите внимание: пароль хранится в открытом виде в реестре (DefaultPassword), поэтому использовать это стоит только в безопасной среде. 🛡️ Есть ещё один способ - через netplwiz, но он не автоматизируется скриптами. А если хотите чуть безопаснее — можно использовать специальные учетные записи без доступа к сети и минимальными правами. 🔄 После внесения изменений — либо ребут, либо shutdown /r /t 0 для применения. 👉 @win_sysadmin

👋 Привет, админы! Проверяем, включен ли Secure Boot на машине.

Confirm-SecureBootUEFI
Если вернёт True - Secure Boot активен. False - выключен. А если вылетает ошибка, значит либо UEFI не используется, либо железо/OS не поддерживают Secure Boot. Хочу напомнить, что Secure Boot - один из базовых элементов защиты от загрузки неподписанных (вредоносных) загрузчиков. Особенно актуально в среде, где есть автозагрузка ISO, PXE или кастомные live-образы. А чтобы прогнать это по сети - можно использовать PowerShell Remoting:

Invoke-Command -ComputerName SERVER01 -ScriptBlock { Confirm-SecureBootUEFI }
Либо через Enter-PSSession, если хотите вручную посмотреть на конкретной машине. 👉 @win_sysadmin

👋 Привет, админы! Как массово проверить статус служб на нескольких серверах? Причём не просто глянуть, работают или нет, а убедиться, что определённые критически важные сервисы (типа w32time, WinRM, TermService) действительно в состоянии Running. Ниже собственно скрипт

$servers = @("server1", "server2", "server3")
$servicesToCheck = @("w32time", "WinRM", "TermService")

foreach ($server in $servers) {
    Write-Host "🔍 Проверка $server" -ForegroundColor Cyan
    foreach ($service in $servicesToCheck) {
        $status = Get-Service -ComputerName $server -Name $service -ErrorAction SilentlyContinue
        if ($status.Status -eq 'Running') {
            Write-Host "$service: OK" -ForegroundColor Green
        } else {
            Write-Host "$service: НЕ РАБОТАЕТ!" -ForegroundColor Red
        }
    }
    Write-Host ""
}
Удобно, когда нужно быстро прогнать по десятку машин. 👉 @win_sysadmin

📕 Бэкап для администратора Windows: ошибки, риски и лучшие практики для системных администраторов, инженеров технической под
📕 Бэкап для администратора Windows: ошибки, риски и лучшие практики для системных администраторов, инженеров технической поддержки и начинающих IT-специалистов. На открытом уроке 9 октября в 20:00 мск мы разберем как правильно и эффективно организовать резервное копирование в Windows. 📗 На вебинаре вы: 1. Сможете выбрать подходящую стратегию резервного копирования. 2. Попробуете использовать встроенные инструменты Windows для бэкапа. 📘 В результате на практике разберетесь, как тестировать и проверять работоспособность резервных копий и как отличать надёжный бэкап от «фикции». 👉 Регистрация и подробности о курсе Администратор Windows: https://vk.cc/cQahzf Все участники открытого урока получат скидку на курс "Администратор Windows" Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

👋 Привет, админы! Сегодня покажу, как быстро найти и перезапустить зависший сервис через PowerShell. 📌Бывают случаи, когда сервис вроде как "работает", статус Running, но по факту не отвечает или не выполняет свои задачи. Такое бывает с агентами резервного копирования, антивирусами и даже SQL Server. Ниже скрипт, который мне помогает выявить такие "зомби-сервисы" и перезапустить их:

$serviceName = "Имя_сервиса"
$svc = Get-Service -Name $serviceName

if ($svc.Status -eq "Running") {
    $process = Get-WmiObject Win32_Service | Where-Object { $_.Name -eq $serviceName }
    if ($process.ProcessId -ne 0) {
        Write-Host "Сервис запущен с PID $($process.ProcessId). Перезапускаем..."
        Restart-Service -Name $serviceName -Force
    } else {
        Write-Host "PID не найден. Возможна проблема – проверь вручную!"
    }
} else {
    Write-Host "Сервис не запущен. Статус: $($svc.Status)"
}
💡 Это особенно полезно на тех серверах, где нет стороннего мониторинга, а время реагирования критично. 👉 @win_sysadmin

👋 Привет, админы! Как быстро понять, кто и когда логинился на сервер или важную машину? Особенно если подозрения на взлом или кто-то заходит в неурочное время (хотя сам так делаю, как правило ночью). Данный PowerShell-скрипт вытащит логи входа в систему (Event ID 4624) из журнала безопасности:

Get-WinEvent -FilterHashtable @{
    LogName = 'Security';
    Id = 4624;
    StartTime = (Get-Date).AddDays(-1)
} | ForEach-Object {
    $xml = [xml]$_.ToXml()
    [PSCustomObject]@{
        TimeCreated = $_.TimeCreated
        AccountName = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "TargetUserName"} | Select-Object -ExpandProperty '#text'
        IPAddress   = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "IpAddress"} | Select-Object -ExpandProperty '#text'
        LogonType   = $xml.Event.EventData.Data | Where-Object {$_.Name -eq "LogonType"} | Select-Object -ExpandProperty '#text'
    }
} | Where-Object { $_.AccountName -ne "ANONYMOUS LOGON" -and $_.LogonType -eq "10" } | Sort-Object TimeCreated
📌 LogonType = 10 - это удалённый интерактивный вход (RDP). 📌 Можно заменить на 2, если нужен локальный интерактивный логон. 📌 Или убрать фильтр, чтобы увидеть всё. Полезно для расследований, мониторинга активности админов, а ещё, если нужно зафиксировать "кто заходил ночью" 😅 (главное на себя не выйти 😂) 👉 @win_sysadmin

👋 Привет, админы! Есть очень простой и полезный трюк, который помогает выявить подозрительные подключения к вашему Windows-серверу - особенно актуально, если сервер доступен извне. 🔥 Проверить активные входящие подключения можно командой:

Get-NetTCPConnection -State Established | Where-Object { $_.RemoteAddress -ne '127.0.0.1' } | 
Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess | 
Sort-Object -Property RemoteAddress
А чтобы узнать, какой процесс стоит за каждым подключением, дополним это:

Get-NetTCPConnection -State Established | 
Where-Object { $_.RemoteAddress -ne '127.0.0.1' } |
ForEach-Object {
    $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
    [PSCustomObject]@{
        RemoteAddress = $_.RemoteAddress
        RemotePort    = $_.RemotePort
        LocalPort     = $_.LocalPort
        ProcessName   = $proc.ProcessName
        PID           = $_.OwningProcess
    }
} | Sort-Object RemoteAddress
📌 Этот способ помогает быстро выявить: - необычные подключения к RDP или кастомным портам; - неизвестные процессы, которые “висят” в сети; - потенциальный бэкдор или троян. Поставьте это на регулярный мониторинг через таск или скрипт с логом в файл. 👉 @win_sysadmin

👋 Привет, админы! Нужно было выключить группу компьютеров в конце дня, чтобы не гоняли лишнее электричество. Ручками заходить на каждый - удовольствие ниже среднего, поэтому сразу пошёл через PowerShell. 🔥 Вот скрипт, который пробегает по списку имен и выключает их удалённо:

$computers = Get-Content "C:\Scripts\pc_list.txt"

foreach ($pc in $computers) {
    try {
        Write-Host "Выключаю $pc..." -ForegroundColor Yellow
        Stop-Computer -ComputerName $pc -Force -ErrorAction Stop
        Write-Host "$pc выключен." -ForegroundColor Green
    } catch {
        Write-Host "Не удалось выключить $pc: $_" -ForegroundColor Red
    }
}
✅ В файле pc_list.txt - просто список имен или IP адресов, по одному на строку. 💡 Не забудь, чтобы всё сработало, на удалённых ПК должна быть включена служба WMI и разрешён доступ через брандмауэр. И конечно, запускай от имени администратора. 👉 @win_sysadmin

Облако ITENTIS CLOUD: технологии топов, цена без наценки (и живая поддержка!) Нашли брендовую вещь в надежном маркете на 30%
Облако ITENTIS CLOUD: технологии топов, цена без наценки (и живая поддержка!) Нашли брендовую вещь в надежном маркете на 30% дешевле? Вот и мы так же. 😉 ITENTIS CLOUD — не "бюджетный" вариант. Это ВСЕ те же технологии, что у Яндекса, Mail или VK (VPC, Kubernetes, S3, снимки, автомасштабирование), но... 🔥 ...ЗНАЧИТЕЛЬНО ДЕШЕВЛЕ! 🔥 Зачем платить за бренд? Получите то же самое (а кое-что лучше) и сэкономьте. Не верите? Сравните тарифы! Надежные дата-центры Tier III, как у всех. И главное — наша поддержка. Вот где мы их РЕАЛЬНО обходим: 💩 У них: очереди, боты, ответ "в течение 24 часов". 😍 У нас: живой, компетентный специалист 24/7. Не бот! Настоящий человек, который РАЗБЕРЕТСЯ. Ответ за минуты. Сложный Kubernetes? Объясним и поможем. Это наш стандарт. Что вы получаете за меньшие деньги: 1. Та же "начинка": все ключевые технологии (VPC, Kubernetes, S3 и т.д.) — как у топов. 2. Надежность: Tier III, 2FA, шифрование, брандмауэры. 3. Скорость: запуск кластера быстрее доставки пиццы. 4. Простой контроль: интуитивное управление. 5. ГЛАВНОЕ: цена, от которой улыбнетесь + поддержка, которая реально спасает. "А подвох?" Да нигде! ▶️14 дней БЕСПЛАТНО: протестируйте всё. ▶️БЕСПЛАТНАЯ миграция: перенесем ваши проекты без простоев. ▶️Гарантия возврата: риск — ноль. ‼️ Понравится? Расскажите друзьям! Реферальная программа: за каждого клиента — бонус или скидка. Без мишуры. Итог: ITENTIS CLOUD = Технологии топов + Честная цена + Человеческая поддержка 24/7. Хватит переплачивать и ждать ответа! Получите максимум. 👉 Действуйте выгодно: 1. Сравните тарифы: https://itentis.cloud 2. Пишите: 🤖 Telegram-бот: @itentis_bot (Фраза: "Хочу облако дешевле Яндекса!") ✉️ Почта: sales@itentis.ru 3. Скажите: "Читал пост про ЭКОНОМИЮ в облаке!" 🚀(Получите бонус!) 4. Присоединяйтесь: https://t.me/+6drq5hdZoRpmMWIy https://itentis.ru Мощное облако. Честная цена. Люди на связи. Реклама. ООО "АВАНГАРД", ОГРН 1107746046550, erid: 2VtzqwA4MKj

👋 Привет, админы! Недавно нужно было срочно найти, кто и когда отключил службу Windows Defender на одном из серверов. В журнале событий куча мусора, стандартный просмотр через Event Viewer - то ещё удовольствие 😅 В таких случаях PowerShell - наше всё. Вот короткий и полезный скрипт, который спас меня:

Get-WinEvent -LogName "System" -FilterXPath "*[System[Provider[@Name='Service Control Manager'] and (EventID=7036)]]" |
Where-Object { $_.Message -like "*Windows Defender*" -and $_.Message -like "*stopped*" } |
Select-Object TimeCreated, Message
📌 Что делает этот скрипт: - Фильтрует события 7036 - это смена состояния служб; - Ищет по ключевым словам в сообщении (stopped и Windows Defender); - Показывает, когда именно служба была остановлена. 🔥 Быстро, удобно и без GUI. Кстати, таким образом можно отслеживать отключения любых критичных сервисов. 👉 @win_sysadmin

👋 Привет, админы! В небольших организациях часто бывает так: компьютер списали, из домена вывели, а учетку в AD забыли удалить. Со временем таких “осиротевших” записей становится всё больше - и вот уже список объектов в AD раздувается, мешает управлению и порождает бардак. Найти такие "забытые" объекты можно с помощью встроенного инструмента PowerShell. 📌 Скрипт ниже ищет компьютеры, которые не логинились в домен 90+ дней, сохраняет список в файл и отправляет его через SMTP:

# Настройки
$days = 90
$time = (Get-Date).AddDays(-$days)
$exportPath = "C:\Scripts\StaleComputers.csv"

# Поиск устаревших компьютеров
$computers = Get-ADComputer -Filter {LastLogonDate -lt $time -and Enabled -eq $true} -Properties LastLogonDate |
    Select-Object Name, LastLogonDate, DistinguishedName

# Экспорт в CSV
$computers | Export-Csv -Path $exportPath -NoTypeInformation -Encoding UTF8

# Параметры SMTP
$smtpServer = "smtp.yourdomain.local"
$from = "report@yourdomain.local"
$to = "admin@yourdomain.local"
$subject = "Отчет: Устаревшие учетные записи компьютеров"
$body = "Во вложении список компьютеров, не входивших в домен более $days дней."

# Отправка письма
Send-MailMessage -From $from -To $to -Subject $subject -Body $body -SmtpServer $smtpServer -Attachments $exportPath
✅ Идеально запускать такой скрипт по расписанию через Task Scheduler раз в месяц! 👉 @win_sysadmin

👋 Привет, админы! Сегодня разберем скрытых пожирателей ресурсов в Windows и как их быстро выявить. Бывает, сервер вроде бы работает, но периодически подтормаживает. CPU не загружен, RAM в норме, диск не трещит, а лаги есть. В таких случаях я первым делом проверяю скрытые потребители ресурсов, которых не видно в обычном диспетчере задач. 🔥 Вот парочка полезных команд в PowerShell, которые помогут найти виновника: 1️⃣ Процессы с аномально высоким потреблением дескрипторов (например, утечки в сервисах):

Get-Process | Sort-Object -Property Handles -Descending | Select-Object -First 10
Если видите процесс с сотнями тысяч дескрипторов – это тревожный звоночек. 2️⃣ Проверка использования сети процессами (чтобы вычислить неожиданно болтливые службы):

Get-NetTCPConnection | Group-Object -Property OwningProcess | Sort-Object Count -Descending | Select-Object -First 10
Выяснит, какие процессы держат максимум соединений. Особенно полезно, если сервер внезапно грузит сеть. 3️⃣ Файлы, которые держит процесс (можно отследить, кто блокирует файлы или грузит диск):

Get-Process | Sort-Object -Property Handles -Descending | Select-Object -First 10
Это поможет найти виновника, если диск занят, но не ясно, кто именно активничает. 👉 @win_sysadmin

👋 Привет, админы! Сегодня разберем одну из самых неприятных ситуаций – когда пользователи жалуются, что их учетные записи бл
👋 Привет, админы! Сегодня разберем одну из самых неприятных ситуаций – когда пользователи жалуются, что их учетные записи блокируются без видимых причин. Разбираешься в логах – а там Event ID 4740 с минимумом информации. Что делать? 🔥 PowerShell спасает! Вот скрипт, который поможет быстро найти источник блокировки:

$LockedUser = "user@domain.com"  # Замените на нужный аккаунт
Get-WinEvent -LogName Security | Where-Object { 
    $_.Id -eq 4740 -and $_.Message -match $LockedUser 
} | Select-Object TimeCreated, @{n="Источник";e={($_.Properties[1].Value)}}
Этот код просканирует журнал безопасности, найдет все события 4740 (блокировка учетной записи) и покажет кто именно заблокировал пользователя. Если видите странные IP-адреса или подозрительные устройства – пора разбираться! 💡 Если хотите автоматически мониторить блокировки и получать уведомления, можно настроить Scheduled Task с этим скриптом или завязать на SIEM. 👉 @win_sysadmin

🎥 Вебинар по Linux: "Linux Monitoring: как отслеживать и анализировать производительность" ☝️ На вебинаре вы узнаете: - Осно
🎥 Вебинар по Linux: "Linux Monitoring: как отслеживать и анализировать производительность" ☝️ На вебинаре вы узнаете: - Основные категории мониторинга: ресурсы, процессы, сеть, логи - Инструменты для мониторинга в Linux: top, htop, iostat, vmstat, sar, netstat, dstat - Как собирать и анализировать метрики с помощью системных и сторонних инструментов 💪 В результате вебинара вы: - Научитесь собирать и анализировать ключевые метрики системы - Сможете выявлять узкие места и потенциальные проблемы заранее - Попробуете комбинировать разные инструменты для комплексного мониторинга ⏰ Все участники вебинара получат специальные условия на полное обучение курса "Administrator Linux. Professional" 👉 Для участия зарегистрируйтесь: https://vk.cc/cPMfON Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

👋 Всем админам доброго вечера! Сегодня разберем автоматическое обновление групповых политик (GPO) на клиентах без необходимости ждать стандартного обновления (которое бывает раз в 90 минут + случайное отклонение до 30 минут). 🔥 Если вам нужно срочно применить новую политику, используйте:

gpupdate /force
Но что, если нужно обновить политику на всех компьютерах домена сразу? Тут поможет PowerShell:

Invoke-GPUpdate -Computer "ИмяКомпьютера" -RandomDelayInMinutes 0
А если нужно массово обновить политики на всех машинах в OU? Тогда можно так:

Get-ADComputer -Filter * -SearchBase "OU=Computers,DC=domain,DC=local" | ForEach-Object {
    Invoke-GPUpdate -Computer $_.Name -RandomDelayInMinutes 0 -AsJob
}
🔹 gpupdate /force - хорош для локального применения. 🔹 Invoke-GPUpdate - удобен для удаленного обновления GPO. 🔹 Комбинация с Get-ADComputer - идеальна для массового обновления в домене. 👉 @win_sysadmin