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

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

前往频道在 Telegram

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

显示更多
3 094
订阅者
-124 小时
-27
+330

数据加载中...

吸引订阅者
八月 '26
八月 '26
+34
在0个频道中
七月 '26
+43
在1个频道中
Get PRO
六月 '26
+23
在0个频道中
Get PRO
五月 '26
+39
在0个频道中
Get PRO
四月 '26
+51
在0个频道中
Get PRO
三月 '26
+49
在2个频道中
Get PRO
二月 '26
+70
在0个频道中
Get PRO
一月 '26
+86
在1个频道中
Get PRO
十二月 '25
+117
在1个频道中
Get PRO
十一月 '25
+248
在33个频道中
Get PRO
十月 '25
+167
在4个频道中
Get PRO
九月 '25
+279
在37个频道中
Get PRO
八月 '25
+160
在3个频道中
Get PRO
七月 '25
+289
在28个频道中
Get PRO
六月 '25
+316
在21个频道中
Get PRO
五月 '25
+424
在45个频道中
Get PRO
四月 '25
+466
在39个频道中
Get PRO
三月 '25
+1 436
在39个频道中
日期
订阅者增长
提及
频道
27 八月0
26 八月+1
25 八月+2
24 八月0
23 八月0
22 八月0
21 八月0
20 八月+3
19 八月0
18 八月+1
17 八月+3
16 八月+2
15 八月+2
14 八月0
13 八月+3
12 八月+3
11 八月0
10 八月0
09 八月0
08 八月+3
07 八月0
06 八月+1
05 八月+2
04 八月+3
03 八月+2
02 八月0
01 八月+3
频道帖子
👋 Привет, админы! Недавно был случай, один из файловых серверов неожиданно перестал принимать события - логи просто «забились» до предела, из-за чего служба безопасности не могла записывать критичные события входа. Оказалось, что журналы событий выросли до 10 ГБ и система больше не записывала новые записи. 🔥 Чтобы предотвратить подобные ситуации, я собрал небольшой скрипт для автоматического архивации и очистки журналов событий, когда их размер превышает заданный порог. Вот пример, который запустил на сервере:

# Порог в мегабайтах
$logSizeThresholdMB = 1024

# Папка для архивации
$archivePath = "D:\EventLogArchives"
if (-not (Test-Path $archivePath)) {
    New-Item -Path $archivePath -ItemType Directory | Out-Null
}

# Функция для проверки и архивации логов
function Archive-And-Clear-EventLog {
    param (
        [string]$LogName
    )
    # Определяем текущий размер лога
    $logInfo = wevtutil gl $LogName
    $fileSizeLine = ($logInfo | Where-Object { $_ -match "fileSize" })
    $sizeBytes = [int64]($fileSizeLine -replace "[^0-9]", "")
    $sizeMB = [math]::Round($sizeBytes / 1MB, 2)

    if ($sizeMB -ge $logSizeThresholdMB) {
        $timestamp = (Get-Date).ToString("yyyyMMdd_HHmmss")
        $archiveFile = Join-Path $archivePath "$LogName`_$timestamp.evtx"

        # Экспортируем текущий журнал
        wevtutil epl $LogName $archiveFile
        Write-Host "Архивировал лог $LogName (размер $sizeMB MB) в $archiveFile"

        # Очищаем журнал
        wevtutil cl $LogName
        Write-Host "Очищен лог $LogName"
    } else {
        Write-Host "Лог $LogName в пределах нормы: $sizeMB MB"
    }
}

# Получаем все журналы, которые хотим контролировать (пример: System и Security)
$logsToCheck = @("System", "Security")
foreach ($log in $logsToCheck) {
    Archive-And-Clear-EventLog -LogName $log
}
Этот скрипт проверяет размер каждого указанного журнала, экспортирует его в папку архива, если размер больше 1 ГБ, и очищает файл. Я поставил его в Task Scheduler с частотой 1 раз в сутки, чтобы не «догонять» проблему вручную. 📲 Мы в MAX 👉 @win_sysadmin

2
👋 Привет, админы! Недавно столкнулся с ситуацией: на одном из серверов системный диск практически «забился» под завязку, а штатные чистилки мусора не помогали - свободного места оставалось критически мало. Оказалось, что куча старых файлов обновлений, временных логов и упаковок пакетов Windows Update съели не меньше 20 ГБ! 🔥 Чтобы оперативно и централизованно освободить место на C:, я использовал PowerShell-скрипт для сброса компонентов Windows Update и удаления временных файлов. # 1. Остановим службы обновлений Write-Host "Останавливаю службы Windows Update..." -ForegroundColor Cyan Stop-Service -Name wuauserv -Force Stop-Service -Name bits -Force Stop-Service -Name cryptsvc -Force # 2. Переименуем папки SoftwareDistribution и Catroot2 (чтобы сбросить кеш) $sd = "C:\Windows\SoftwareDistribution" $cr2 = "C:\Windows\System32\catroot2" $timestamp = Get-Date -Format "yyyyMMdd_HHmmss" Write-Host "Переименовываю SoftwareDistribution и Catroot2..." -ForegroundColor Cyan Rename-Item -Path $sd -NewName "SoftwareDistribution_$timestamp" -Force Rename-Item -Path $cr2 -NewName "catroot2_$timestamp" -Force # 3. Запустим службы обратно Write-Host "Запускаю службы Windows Update..." -ForegroundColor Cyan Start-Service -Name wuauserv Start-Service -Name bits Start-Service -Name cryptsvc # 4. Удаляем временные файлы пользователя и систему temp Write-Host "Удаляю временные файлы..." -ForegroundColor Cyan Get-ChildItem "C:\Windows\Temp" -Recurse -Force | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue Get-ChildItem "$env:TEMP" -Recurse -Force | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue # 5. Очищаем папку Prefetch (если нужно) Write-Host "Очищаю Prefetch (опционально)..." -ForegroundColor Cyan Get-ChildItem "C:\Windows\Prefetch" -Recurse -Force | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue # 6. Запускаем анализ и дефрагментацию (для HDD/SDD команда отличается) Write-Host "Запускаю оптимизацию диска (для HDD)..." -ForegroundColor Cyan Optimize-Volume -DriveLetter C -ReTrim -Verbose Write-Host "Готово! Освобождено место и сброшен кеш Windows Update." -ForegroundColor Green 🔍 Что делает скрипт: 1. Останавливает службы wuauserv, bits и cryptsvc, чтобы освободить доступ к файлам обновлений. 2. Переименовывает папки SoftwareDistribution и catroot2 - таким образом Windows создаёт новые «чистые» папки при следующем запуске службы обновлений. 3. Перезапускает службы, чтобы система могла продолжить получать обновления. 4. Удаляет старые временные файлы из C:\Windows\Temp и из переменной %TEMP% текущего пользователя. 5. (Опционально) Очищает папку Prefetch - пригодится, если вы хотите сбросить предзагрузку приложений (иногда помогает ускорить старт служб). 6. Запускает командлет Optimize-Volume с параметром –ReTrim (важно для SSD, если нужно, или дефрагментацию для HDD), что в итоге дополнительно освобождает свободное пространство и приводит метаданные диска в порядок. 💡 Лайфхак: - Если вы работаете со множеством серверов, оберните этот скрипт в экспорт модуля или сохраните в виде .ps1, а затем запускайте его через Scheduled Task по расписанию раз в неделю/месяц. - Можно добавить проверку свободного места перед выполнением очистки, чтобы скрипт запускался, только когда доступно меньше, скажем, 10 ГБ: $freeGB = [math]::Round((Get-PSDrive -Name C).Free / 1GB, 2) if ($freeGB -lt 10) { # выполняем очистку } else { Write-Host "Достаточно места — пропускаю действия." } Не забывайте тестировать на тестовых окружениях перед тем, как развертывать на продакшне. 📲 Мы в MAX 👉 @win_sysadmin
606
3
👋 Всем админам добрейшего дня! Как массово поменять пароли локальных администраторов на паре десятков серверов. Ручками это делать долго да и не очень безопасно. Лучше освободившееся время потрачу с пользой 🍺 Поэтому автоматизируем процесс через PowerShell. Ниже собственно скрипт: $servers = @("Server01", "Server02", "Server03") # список серверов $newPass = ConvertTo-SecureString "Новый_Сложный_Пароль!" -AsPlainText -Force foreach ($srv in $servers) { Invoke-Command -ComputerName $srv -ScriptBlock { param($pass) $user = [ADSI]"WinNT://./Administrator,User" $user.SetPassword($pass) } -ArgumentList $newPass } ⚡️ Важно: убедись, что у тебя есть права на все машины и открыт WinRM! Если хочется более гибко, можно расширить скрипт, добавить логирование или рандомизацию паролей. 📲 Мы в MAX 👉 @win_sysadmin
727
4
👋 Привет, админы! Пользователи массово жаловались на медленный вход в систему. Крутилось приветствие по 3-5 минут. Оказалось, виновата политика групповых дисков, которая грузилась слишком долго. Решение оказалось простым, нужно быстро найти проблемные политики. Вот удобный скрипт на PowerShell для проверки времени обработки GPO при входе пользователя: Get-WinEvent -LogName "Microsoft-Windows-GroupPolicy/Operational" | Where-Object { $_.Id -eq 4016 } | Select-Object TimeCreated, @{n='Время загрузки GPO (сек)';e={$_.Properties[0].Value}}, @{n='Название GPO';e={$_.Properties[1].Value}} | Sort-Object 'Время загрузки GPO (сек)' -Descending | Select-Object -First 10 Этот скрипт покажет 10 самых «тяжёлых» групповых политик по времени загрузки. В моём случае лидером стала политика с забытым сетевым диском на уже не существующий файловый сервер. 📲 Мы в MAX 👉 @win_sysadmin
1 039
5
👋 Привет, админы! Была давече нестандартная проблема на одном из клиентских Windows 11. Пользователь жаловался: не работает печать, а в очереди, вечно зависшие задания. Перезапуск spooler'а не помогал. Разбор показал - виноват битый драйвер, но перед этим пришлось как следует почистить очередь печати и файлы, чтобы дать системе "вдохнуть". Накидал скрипт, который меня спас: 🔥 Полная зачистка очереди печати и временных файлов spooler: Stop-Service -Name spooler -Force Remove-Item -Path "C:\Windows\System32\spool\PRINTERS\*" -Force Start-Service -Name spooler Если директория не очищается, проверь права или вручную удали зависшие .spl и .shd файлы. После этого очередь ожила, и новые задания пошли без залипаний. А чтобы в следующий раз не искать виновника вручную, добавил логирование проблем с драйверами через Get-EventLog: Get-EventLog -LogName System -Source "Print" -EntryType Error -Newest 20 Очень удобно, сразу видно, какой драйвер шалит. 📲 Мы в MAX 👉 @win_sysadmin
942
6
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max.ru/channel_win_sysadmin Системный Администратор Windows https://max.ru/channel_linux_admin Linux: Системный администратор https://max.ru/channel_linuxmod Linux https://max.ru/channel_i_linux Системный администратор https://max.ru/channel_devopslib DevOps, SRE, Sysadmin https://max.ru/channel_devops_star DevOps Star (Звезда Девопса) Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С https://max.ru/channel_DevLab1C 1С:Предприятие 8 Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика https://max.ru/channel_cpp_geek C++ geek Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Rust📌 https://max.ru/channel_rust_lib Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика https://max.ru/channel_java_geek Java Geek GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии в IT📌 https://max.ru/progjob https://max.ru/channel_rabotait Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Городские📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП https://max.ru/channel_krasnodar_novosty Краснодар Новости https://max.ru/channel_novosibirsk_novosti Новосибирск https://max.ru/channel_samara_novosti Новости Самары https://max.ru/channel_ekaterinburg_novosti Новости Екатеринбурга https://max.ru/channel_kazan_novosti Новости Казани https://max.ru/channel_omsk_novosti Новости Омска https://max.ru/channel_moskva_24 Москва 24
791
7
👋 Привет, админы! Куда уходит свободное место на диске? Думаешь, что всё под контролем, а потом бац - и диск C: в красной зоне. Особенно часто такое встречал на серверах с включённым журналированием или забытым логированием. 📌 Накидал скрипт, который помогает быстро найти топ папок и файлов, пожирающих пространство: $path = "C:\" Get-ChildItem -Path $path -Recurse -ErrorAction SilentlyContinue | Where-Object { -not $_.PSIsContainer } | Sort-Object Length -Descending | Select-Object FullName, @{Name="SizeMB";Expression={[math]::round($_.Length / 1MB, 2)}} -First 20 Что бы посмотреть топ папок, используй du из Sysinternals: .\du.exe -q -l 1 C:\ (если не знаешь - du.exe можно взять отсюда) Очень выручает, когда нужно быстро понять, что разрослось - профили пользователей, временные файлы, лог-файлы от софта, который никто не трогал годами... 📲 Мы в MAX 👉 @win_sysadmin
775
8
👋 Привет, админы! Недавно столкнулся с проблемой - один из пользователей жаловался, что «всё долго открывается», особенно сетевые папки. На первый взгляд - обычная история, но решил покопать глубже. 📌 Оказалось, виноват механизм автоматического поиска сетевых принтеров и папок, который Windows выполняет при каждом открытии проводника. На слабых или загруженных машинах это может серьезно замедлить работу. ✅ Быстрое решение - отключить этот механизм через реестр или GPO. Вот способ через PowerShell: Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "NoNetCrawling" -Value 1 Этот параметр отключает автоматическое сканирование сети на предмет расшаренных ресурсов. Пользователь сам откроет то, что нужно - без лишних тормозов. Проверено - сразу стал отзывчивее проводник и пропали лаги при открытии «Сеть». 📲 Мы в MAX 👉 @win_sysadmin
1 015
9
👋 Привет, админы! Сегодня расскажу про один недокументированный нюанс с задачами в Планировщике Windows, с которым недавно столкнулся сам. Был у меня скрипт, который по расписанию должен запускаться от имени системной учетной записи (SYSTEM). Всё настроено правильно, вручную запускается - работает. Но вот по расписанию не срабатывает. Без ошибок, без логов, просто тишина. 🤔 🔍 После копания выяснилось: если задача запускается от SYSTEM, но в свойствах включена опция "Запускать только при входе пользователя", - она НЕ выполнится, потому что SYSTEM не входит в систему в классическом понимании. 💡 Решение: 1. Зайти в свойства задачи. 2. Переключить опцию на: "Выполнять вне зависимости от входа пользователя". 3. Обязательно включить галку "Не сохранять пароль", если используете обычную учетку (для SYSTEM это не критично). 📌 Ну и по возможности включайте логирование в задаче - пусть пишет вывод скрипта в файл, так проще отлавливать подобные "невидимые" фейлы. 📲 Мы в MAX 👉 @win_sysadmin
1 069
10
💻 Сисадмин — это человек, который: ✔ приходит раньше всех; ✔ уходит позже всех; ✔ знает все пароли, но делает вид, что не знает; ✔ чинит принтеры, хотя не обязан; ✔ отвечает за интернет, электричество, погоду и плохое настроение пользователей. С праздником, легенды IT! Пусть хотя бы сегодня никто не говорит: «У меня компьютер не работает. Посмотри...» 😄
1 240
11
Где этой осенью будут обсуждать ИТ не в теории, а по-настоящему? На IT Elements 2026 — конференции для инженеров, архитекторо
Где этой осенью будут обсуждать ИТ не в теории, а по-настоящему? На IT Elements 2026 — конференции для инженеров, архитекторов, безопасников и руководителей технических команд, которые отвечают за устойчивость критических ИТ-систем бизнеса. Здесь не пересказывают тренды и не показывают “идеальные схемы”. Здесь разбирают, как в реальности строят инфраструктуру, мигрируют с иностранных решений, защищают системы, восстанавливают сервисы после инцидентов и обеспечивают работу ИТ под нагрузкой. Что ждет участников: 📌 реальные инженерные кейсы из крупных компаний; 📌 лаборатории, технические воркшопы и практические разборы; 📌 дискуссии про отказоустойчивость, безопасность и эксплуатацию; 📌 общение с инженерами, архитекторами и ИТ/ИБ-руководителями. Формат: офлайн в Москве и онлайн. Участие бесплатное. Регистрация уже открыта — оставляйте заявку на сайте конференции.
1 047
12
🔥 Как быстро очистить память от мусорных процессов в Windows 👋 Привет, админы! Бывало у вас такое, что сервер или рабочая станция начинают дико тормозить, а в диспетчере задач видно, что память съедена каким-то процессом? Закрыть руками не всегда удобно, особенно если это удаленная машина. 🚀 Вот простой способ быстро очистить память с помощью PowerShell: Get-Process | Where-Object { $_.WorkingSet64 -gt 500MB } | Sort-Object WorkingSet64 -Descending | Select-Object -First 5 | Stop-Process -Force 🔍 Что делает этот скрипт? • Находит процессы, которые жрут больше 500MB RAM • Сортирует их по потреблению памяти • Берет топ-5 самых прожорливых • Безжалостно убивает их ⚠️Важно! Перед использованием убедитесь, что не завершаете критически важные сервисы. Лучше сначала проверить, кто именно грузит систему: Get-Process | Sort-Object -Property WorkingSet64 -Descending | Select-Object -First 10 📲 Мы в MAX 👉 @win_sysadmin
884
13
👋 Привет, админы! Сегодня разберем автоматическое обновление групповых политик (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 — идеальна для массового обновления в домене. 📲 Мы в MAX 👉 @win_sysadmin
923
14
👋 Привет, админы! Сегодня расскажу про один неожиданный баг, с которым столкнулся на Windows Server 2022. После обновлений сервер перестал пускать пользователей по RDP. Ошибка - классическая: "The connection was denied because the user account is not authorized for remote login." Хотя у юзеров были все нужные права. 🤔 🔍 Копнул глубже - выяснилось, что в группе Remote Desktop Users внезапно исчезли все пользователи. Но в GPO права были заданы верно! Оказалось, что одно из обновлений сбросило локальные группы при конфликте с групповыми политиками. 💡 Решение: 1. Проверил GPO через gpresult /h report.html - нужные настройки есть. 2. Добавил пользователей обратно в группу через PowerShell: Add-LocalGroupMember -Group "Remote Desktop Users" -Member "DOMAIN\username" 3. Чтобы автоматизировать проверку и добавление нужных участников - вот мини-скрипт: $users = @("DOMAIN\user1", "DOMAIN\user2") foreach ($u in $users) { if (-not (Get-LocalGroupMember -Group "Remote Desktop Users" -Member $u -ErrorAction SilentlyContinue)) { Add-LocalGroupMember -Group "Remote Desktop Users" -Member $u Write-Host "$u добавлен в Remote Desktop Users" } } Если на сервере действует GPO, которая перезаписывает локальную группу RDP Users - добавление вручную не поможет, всё снова очистится при следующем применении политики. В таком случае правьте GPO или используйте Restricted Groups/Group Policy Preferences. 📲 Мы в MAX 👉 @win_sysadmin
1 062
15
👋 Привет, админы! Сегодня хочу поделиться реальным кейсом из недавней практики. У нас один Windows Server 2019 внезапно перестал применять групповые политики, причем только для некоторых пользователей. Перезапуск gpupdate /force ничего не давал, а в логах висела ошибка "The processing of Group Policy failed. Windows attempted to read the file \\domain.local\sysvol\..." с кодом 1355. 🔥 Решение оказалось простым, но не сразу очевидным: проблема была в DNS! Проверил настройки сетевого подключения — и оказалось, что в DNS стояли публичные адреса, а не наши контроллеры домена. Из-за этого сервер не мог найти свой DC. 📋 Быстрое исправление: 1. Настроил правильные DNS сервера на интерфейсе (IP адреса контроллеров домена). 2. Очистил кэш DNS: ipconfig /flushdns 3. Перезапустил сетевые службы: Restart-Service -Name "Dnscache","Netlogon","Kdc" 4. И только потом сделал: gpupdate /force После этого политики применились без ошибок! ✅ Вывод: при любых странностях с доменом сначала проверяйте DNS. В 80% случаев проблема именно там. 📲 Мы в MAX 👉 @win_sysadmin
1 031
16
👋 Привет, админы! Сегодня хочу поделиться полезным трюком, как отслеживать подключения к RDP - кто, когда и откуда логинился на сервер. Это особенно актуально, если вы не используете полноценный SIEM, но хотите держать руку на пульсе. 🔍 Используем журнал событий и PowerShell: Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} | Where-Object { $_.Properties[8].Value -eq '10' } | Select-Object TimeCreated, @{Name='User';Expression={$_.Properties[5].Value}}, @{Name='IP';Expression={$_.Properties[18].Value}} | Sort-Object TimeCreated -Descending | Out-GridView 📌 Что делает скрипт: - Ищет события успешного входа (4624), - Фильтрует по типу логина 10 (удалённый интерактивный - это RDP), - Показывает дату, пользователя и IP-адрес источника. Очень удобно запускать на сервере и быстро проверять, кто заходил и когда. Можно адаптировать для логгера или отправки уведомлений. 📲 Мы в MAX 👉 @win_sysadmin
1 123
17
Как я автоматизировал очистку Temp на всех ПК в домене Иногда кажется, что папка %TEMP% - это черная дыра. Пользователи жалуются на тормоза, места на диске мало, а ты заходишь туда - и видишь архивы обновлений, временные файлы Office, кэш инсталляторов и прочий мусор за последние сто лет. Руками чистить на каждом ПК? Нет уж. Я сделал это через PowerShell и GPO. Решение: Скрипт для очистки временных файлов запускается через планировщик задач от имени SYSTEM, раз в неделю. Вот пример скрипта: $TempPath = "$env:TEMP" Get-ChildItem -Path $TempPath -Recurse -Force -ErrorAction SilentlyContinue | Where-Object { -not $_.PSIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force -ErrorAction SilentlyContinue Чтобы запускался на всех компах в домене: 1. Создал GPO с task scheduler (Computer Configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks) 2. Указал Action: Create, Run as: SYSTEM, триггер раз в неделю. 3. В Program/script указал powershell.exe, а в аргументах: -ExecutionPolicy Bypass -File \\ваш-сервер\netlogon\clean_temp.ps1 Важно: – Скрипт не трогает свежие файлы (новее 7 дней) – Работает бесшумно, ничего не спрашивает – Можно дополнительно чистить C:\Windows\Temp, если уверены Вывод: Не запускайте такую штуку в logon-скриптах - это затормозит вход в систему. Лучше использовать планировщик задач. И, конечно, тестируйте сначала на паре машин — на всякий случай. 👉 @win_sysadmin
3 587
18
👋 Привет, админы! Сегодня расскажу про один кейс, который недавно словил на одном из файловых серверов. Пользователи начали жаловаться, что не могут открыть файлы по SMB - «доступ запрещен», хотя права вроде бы на месте. 📌 В Event Viewer (журнал Security) увидел кучу записей с кодом ошибки 0xc000006d (STATUS_LOGON_FAILURE). А рядом — ещё интереснее: Audit Failure, Logon Type 3, учетка domain\username. 🔥 Оказалось, что проблема была в сбитом времени на сервере — он отставал на 6 минут от контроллера домена. Из-за этого Kerberos-билеты считались просроченными, и аутентификация тупо ломалась. 📎 Решение: 1. Проверил текущую синхронизацию времени: w32tm /query /status 2. Перезапустил службу времени и указал правильный NTP: w32tm /config /manualpeerlist:"time.windows.com,0x9" /syncfromflags:manual /reliable:yes /update Restart-Service w32time 3. Синхронизировал вручную: w32tm /resync /force ✅ После этого всё заработало, ошибки исчезли, пользователи успокоились. 👉 @win_sysadmin
1 255
19
👋 Привет, админы! Как срочно проверить, кто и когда перезагружал сервер. Вроде бы задача простая, но в спешке иногда забываешь точные команды. Делюсь, чтобы не искать в следующий раз: 🕵️‍♂️ Ловим события перезагрузки через журнал: Get-EventLog -LogName System -Source User32 | Where-Object { $_.EventID -eq 1074 } | Select TimeGenerated, Message | Sort-Object TimeGenerated -Descending Этот запрос покажет, кто инициировал перезагрузку, с какой причиной и когда это было. Очень полезно при разборе неожиданных рестартов или плановых работ, которые никто "не помнит". ✅ Дополнительно можно глянуть системные события ID 6006 (нормальное выключение) и 6005 (загрузка журнала, т.е. запуск системы): Get-EventLog -LogName System | Where-Object { $_.EventID -eq 6006 -or $_.EventID -eq 6005 } | Select TimeGenerated, EventID | Sort-Object TimeGenerated -Descending 🔥 Удобно добавлять эти команды в свой набор “быстрых админских команд”. 👉 @win_sysadmin
1 247
20
👋 Привет, админы! На днях столкнулся с интересной ситуацией: служба 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
1 273