Системный Администратор Windows – Telegram
Системный Администратор Windows
3.12K subscribers
16 photos
2 videos
25 links
🖥️ Windows для системных администраторов: управление, оптимизация, безопасность. Полезные советы, лайфхаки, PowerShell-скрипты, автоматизация и практические решения для работы с серверами и рабочими станциями.

Авторский канал.
Download Telegram
🎥 Вебинар по Linux: "Linux Monitoring: как отслеживать и анализировать производительность"

☝️ На вебинаре вы узнаете:
- Основные категории мониторинга: ресурсы, процессы, сеть, логи
- Инструменты для мониторинга в Linux: top, htop, iostat, vmstat, sar, netstat, dstat
- Как собирать и анализировать метрики с помощью системных и сторонних инструментов

💪 В результате вебинара вы:
- Научитесь собирать и анализировать ключевые метрики системы
- Сможете выявлять узкие места и потенциальные проблемы заранее
- Попробуете комбинировать разные инструменты для комплексного мониторинга

Все участники вебинара получат специальные условия на полное обучение курса "Administrator Linux. Professional"

👉 Для участия зарегистрируйтесь: https://vk.cc/cPMfON

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👋 Привет, админы!

Сегодня разберем одну из самых неприятных ситуаций – когда пользователи жалуются, что их учетные записи блокируются без видимых причин. Разбираешься в логах – а там 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
👍16
👋 Привет, админы!

Сегодня разберем скрытых пожирателей ресурсов в 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
👍12🔥4
👋 Привет, админы!

В небольших организациях часто бывает так: компьютер списали, из домена вывели, а учетку в 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
👍17
👋 Привет, админы!

Недавно нужно было срочно найти, кто и когда отключил службу 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
🔥14👍6
Облако 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://news.1rj.ru/str/+6drq5hdZoRpmMWIy

https://itentis.ru Мощное облако. Честная цена. Люди на связи.

Реклама. ООО "АВАНГАРД", ОГРН 1107746046550, erid: 2VtzqwA4MKj
👍2
👋 Привет, админы!

Нужно было выключить группу компьютеров в конце дня, чтобы не гоняли лишнее электричество. Ручками заходить на каждый - удовольствие ниже среднего, поэтому сразу пошёл через 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
👍10👎1
👋 Привет, админы!

Есть очень простой и полезный трюк, который помогает выявить подозрительные подключения к вашему 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
👍14
👋 Привет, админы!

Как быстро понять, кто и когда логинился на сервер или важную машину? Особенно если подозрения на взлом или кто-то заходит в неурочное время (хотя сам так делаю, как правило ночью).

Данный 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
👍163
👋 Привет, админы!

Сегодня покажу, как быстро найти и перезапустить зависший сервис через 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
👍10
📕 Бэкап для администратора Windows: ошибки, риски и лучшие практики для системных администраторов, инженеров технической поддержки и начинающих IT-специалистов.

На открытом уроке 9 октября в 20:00 мск мы разберем как правильно и эффективно организовать резервное копирование в Windows.

📗 На вебинаре вы:
1. Сможете выбрать подходящую стратегию резервного копирования.
2. Попробуете использовать встроенные инструменты Windows для бэкапа.

📘 В результате на практике разберетесь, как тестировать и проверять работоспособность резервных копий и как отличать надёжный бэкап от «фикции».

👉 Регистрация и подробности о курсе Администратор Windows: https://vk.cc/cQahzf

Все участники открытого урока получат скидку на курс "Администратор Windows"

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👋 Привет, админы!

Как массово проверить статус служб на нескольких серверах?

Причём не просто глянуть, работают или нет, а убедиться, что определённые критически важные сервисы (типа 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
👍12
👋 Привет, админы!

Проверяем, включен ли 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
👍7
👋 Привет, админы!

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

Решается это через редактирование реестра:


$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
👍9
Нам ваш заморский AI нафиг не нужон!

Сами сделаем свой AI на бесплатном вебинаре «On-prem LLM – свой распределённый AI-кластер за 2 часа».

📍На вебинаре узнаете:

1. как запускать крупные языковые модели без внушительных бюджетов. 
2. как организовать эффективный и масштабируемый инференс, не переплачивая за инфраструктуру. 
3. как подключить удобный веб-интерфейс (OpenWebUI) и обеспечить безопасность через CDN/WAF. 

После вебинара поймете, что выделить домашний кластер под серьёзные AI-задачи — вполне реальная и захватывающая  авантюра.

Спикеры:
🔝 Подмосковный Александр, менеджер продукта по направлению ML/AI/GPU в компании «Флант»
🔝 Виталий Лихачев, SRE в крупном нидерландском тревелтехе

📅23 октября в 19:00

Регистрация на вебинарпо ссылке 👈
🤡42👍1
👋 Привет, админы!

Сегодня покажу, как отключить автоматический вход в 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
👍9
👋 Привет, админы!

Если вдруг замечаете странную активность по 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
👍12
📕 Контейнеризация в Windows Server для системных администраторов, инженеров технической поддержки и начинающих IT-специалистов.

На открытом уроке 22 октября в 20:00 мск мы разберем как использовать контейнеры в Windows Server.

📗 На вебинаре вы:
1. Узнаете, как использовать контейнеризацию для повышения гибкости и управляемости серверной инфраструктуры.
2. Освоите базовые команды и подходы к управлению контейнерами.

📘 В результате на практике развернете свой первый контейнер с помощью Docker и поймете принципы работы контейнеров в Windows Server.

👉 Регистрация и подробности о курсе Администратор Windows: https://vk.cc/cQwN9r

Все участники открытого урока получат скидку на курс "Администратор Windows"

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
4
👋 Всем админам доброго раннего утра!

Сегодня коротко и по делу, что включить в 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
👍171
👋 Привет, админы!

Если вы уже используете Wazuh (open-source SIEM), то грех не настроить сбор событий безопасности с Windows, особенно для анализа логинов и брутфорса по RDP.

Вот как это делается 👇



🛠️ Установка Wazuh Agent на Windows

1. Скачиваем агент отсюда: https://wazuh.com/

2. Устанавливаем с указанием менеджера (сервер Wazuh):


msiexec /i "wazuh-agent-4.x.x.msi" /qn WAZUH_MANAGER="10.0.0.1" WAZUH_REGISTRATION_SERVER="10.0.0.1" WAZUH_AGENT_NAME="srv-win01"


3. После установки — правим C:\Program Files (x86)\ossec-agent\ossec.conf (если надо вручную задать имя, группы и т.п.)

4. Перезапускаем агент:


net stop wazuh-agent
net start wazuh-agent




📋 Что собирает агент?

По умолчанию:
- События из Security, System, Application
- Входы в систему (4624, 4625, 4778, 4779)
- Изменения в учётках, политиках, реестре
- Информация об установке/удалении софта

🎯 Всё это попадает в дашборд Wazuh и может быть обработано правилами: алерты, уведомления, триггеры.



🔥 Пример алерта в Wazuh при брутфорсе по RDP:


{
"rule": {
"id": "18107",
"level": 10,
"denoscription": "Windows RDP brute-force attempt detected",
"group": "windows, authentication_failed, brute_force"
},
"srcip": "192.168.1.200",
"user": "admin",
"location": "Security",
"full_log": "Logon failure: Type 10 (RemoteInteractive)"
}


📌 Это можно отправить на почту, в Telegram, или автоматизировать блокировку IP (например, через Active Responses).

💬 А вы уже пробовали Wazuh или у вас другая SIEM-система? Сравнивали с Graylog, Splunk, Sentinel?

👉 @win_sysadmin
👍95
👋 Доброй субботы, админы!

На днях столкнулся с интересной ситуацией: служба Windows Update на одном из серверов Windows Server 2019 просто отказалась стартовать. Перезапуск, reset компонентов — ничего не помогло.

Оказалось, что виноват битый файл базы данных обновлений. Решение оказалось простым, но мало кто его делает вручную:

🔥 Вот PowerShell-скрипт, который полностью сбрасывает Windows Update, включая очистку базы данных:


Stop-Service -Name wuauserv -Force
Stop-Service -Name bits -Force
Remove-Item -Path "C:\Windows\SoftwareDistribution" -Recurse -Force
Start-Service -Name wuauserv
Start-Service -Name bits


После этого сервер спокойно начал тянуть апдейты. Главное — не забудьте перезапустить сервисы, а лучше сразу проверить доступность обновлений:


Get-WindowsUpdate


(если стоит PSWindowsUpdate модуль)

💡Если хотите автоматизировать это на нескольких машинах — добавьте Invoke-Command и в путь!

👉 @win_sysadmin
👍15