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

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

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
3 086
Obunachilar
Ma'lumot yo'q24 soatlar
-77 kunlar
-830 kunlar
Postlar arxiv
👋 Привет, админы! Нужно было настроить автологин для одного стендового сервера в изолированной сети - без домена, без пользователей, просто чтобы поднимался нужный софт после перезагрузки. Решается это через редактирование реестра:

$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

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

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

🚀 Подборка полезных 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 Типичный Сисадмин Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика 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 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП

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

👋 Привет, админы! Недавно нужно было срочно найти, кто и когда отключил службу 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

👋 Всем админам доброго утра! Сегодня разберем автоматическое обновление групповых политик (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

👋 Всем админам доброго вечера! Продолжаю тему теневых копий в Windows - на этот раз чисто PowerShell-практика. Теневые копии (VSS) не раз спасали меня, когда нужно быстро вернуть удалённый файл без полноценного восстановления из бэкапа. Ниже - мой минималистичный «набор выживальщика»: создать снапшот, смонтировать, вытащить файл, почистить и настроить расписание. 🚀 Базовые операции VSS через PowerShell Создать теневую копию тома C:

# PS 5.1/7+ (через CIM)
Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create `
  -Arguments @{ Volume = 'C:\'; Context = 'ClientAccessible' } | Out-Null
Список доступных теневых копий:

Get-CimInstance Win32_ShadowCopy |
  Sort-Object InstallDate -Descending |
  Format-Table ID, VolumeName, InstallDate, ClientAccessible, DeviceObject -Auto
Смонтировать самую свежую копию в папку (удобно лазить по снапшоту проводником):

$sh = Get-CimInstance Win32_ShadowCopy | Sort-Object InstallDate -Desc | Select-Object -First 1
$mount = 'C:\ShadowMounts\C_latest'
New-Item -ItemType Directory -Path $mount -Force | Out-Null
$dev = ($sh.DeviceObject.TrimEnd('\')) + '\'
cmd /c "mklink /d `"$mount`" `"$dev`""
# Готово: открывайте C:\ShadowMounts\C_latest
Вытянуть конкретный файл из последней копии (без монтирования):

$path = 'C:\Data\report.xlsx'       # что хотим вернуть
$sh   = Get-CimInstance Win32_ShadowCopy | Sort-Object InstallDate -Desc | Select-Object -First 1
$rel  = $path -replace '^[A-Za-z]:\\',''  # убрать "C:\"
$src  = Join-Path ( ($sh.DeviceObject.TrimEnd('\')) + '\' ) $rel
Copy-Item $src $path -Force
Удалить конкретную теневую копию:

$sh | Remove-CimInstance
🧠 Управление хранилищем теневых копий Проверить и ограничить размер:

vssadmin list shadowstorage
vssadmin resize shadowstorage /For=C: /On=C: /MaxSize=20%
👉 Если места мало - VSS начнёт сносить самые старые копии. Планируйте «MaxSize». ⏰ Планирование ежедневного снапшота (02:00)

$cmd = 'powershell.exe'
$arg = '-NoProfile -WindowStyle Hidden -Command "Invoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{Volume=''C:\'';Context=''ClientAccessible''} | Out-Null"'
$action  = New-ScheduledTaskAction -Execute $cmd -Argument $arg
$trigger = New-ScheduledTaskTrigger -Daily -At 02:00
Register-ScheduledTask -TaskName 'Daily-VSS-C' -Action $action -Trigger $trigger -RunLevel Highest
На серверах с PowerShell 7 можно заменить powershell.exe на pwsh.exe.
🔒 Безопасность и мониторинг - Рансомварь любит грохать VSS: ищите команды вроде vssadmin delete shadows /all /quiet, wmic shadowcopy delete, diskshadow.exe. Логи: включите аудит создания процессов (Sysmon Event ID 1) и подпишите правила под эти утилиты и ключевые слова в командной строке. - Ограничьте утилиты: на рабочих станциях, где VSS админам не нужен — AppLocker/WDAC для vssadmin.exe, wmic.exe, diskshadow.exe. - Журналы VSS: заглядывайте в Application и Microsoft-Windows-Volume Shadow Copy/Operational при сбоях провайдера. 🧩 Типичные затыки и лайфхаки - Доступа нет к путям снапшота — добавляйте \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\ в исключения антивируса на время операций. - Недостаточно места — расширьте shadowstorage или поменяйте диск-хранилище: /For=C: /On=D:. - Нужны «предыдущие версии» для пользователей - ставьте Context='ClientAccessible' (или ClientAccessibleWriters для VSS-aware приложений). 👉 @win_sysadmin

🚀 Подборка полезных 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 Типичный Сисадмин 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика 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 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы

👋 Админы, всем доброго понедельника! Сегодня напомню про недооценённый инструмент - PowerShell-диски (PSDrive). Это логические “диски” к разным хранилищам: файловая система (C:), реестр (HKCU:/HKLM:), сертификаты (Cert:) и т.д. С ними удобно навигироваться одинаково, одной логикой командлетов Location. 🧭 Базовые команды:

# Показать все доступные PSDrive
Get-PSDrive

# Отфильтровать только файловую систему
Get-PSDrive -PSProvider FileSystem

# Навигация по реестру как по папкам
Set-Location HKLM:\SOFTWARE
Push-Location .\Microsoft
Get-Location
(И да, Get-PSDrive покажет и провайдеры вроде Registry/Certificate/Environment - удобно для обзора). 🧩 Создание своих “дисков”:

# Монтируем удобный ярлык на папку
New-PSDrive -Name Tools -PSProvider FileSystem -Root "C:\Admin\Tools"

# Короткий путь к важной ветке реестра
New-PSDrive -Name CV -PSProvider Registry -Root HKLM:\Software\Microsoft\Windows\CurrentVersion
⚠️ Такие диски живут в текущей сессии. Хотите постоянно - добавьте New-PSDrive в профиль ($PROFILE). 🧹 Удаление:

Remove-PSDrive -Name Tools
Нельзя удалить диск, если вы “на нём” (сначала Set-Location в другое место). 💡 Лайфхаки из практики: - Держите короткие алиасы на длинные ветки реестра для быстрых правок. - Для огляда системы делайте Get-PSDrive | Format-Table Name,Provider,Root -Auto. - В профиле храните свои стандартные монтирования для админских задач. 👉 @win_sysadmin

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

Get-PSDrive -PSProvider FileSystem | Select-Object Name,@{n="FreeGB";e={[math]::Round($_.Free/1GB,2)}},@{n="Used%";e={[math]::Round(100-($_.Free/$_.Used+ $_.Free)*100,2)}}
Он показывает: - Имя диска - Свободное место (ГБ) - Процент занятости Можно добавить в планировщик задач и получать отчёт на почту или писать лог. А если подключить это к мониторингу (например, через Zabbix/PRTG), то сервер сам предупредит о критическом заполнении. 👉 @win_sysadmin

🚀 Подборка полезных 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 Типичный Сисадмин 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика 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 Обучающие видео, книги по Физике и Математике Вакансии 📌 https://max.ru/progjob Вакансии в IT Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы

👋 Всем админам доброго вечера! Сегодня поделюсь приёмом, который реально спасает, когда пользователи жалуются на «медленный интернет» или «сетевые лаги». Чаще всего виноват вовсе не провайдер, а перегруженные сетевые интерфейсы на самом сервере. 🔥 Проверить статистику адаптеров можно так:

Get-NetAdapterStatistics | Select-Object Name, ReceivedBytes, SentBytes, ReceivedErrors, OutboundErrors
Команда показывает количество принятых/отправленных байт и ошибки на интерфейсе. Если видите рост ReceivedErrors или OutboundErrors - значит, проблемы в железе, драйвере или кабеле. А если нужно онлайн-мониторинг, можно добавить цикл:

while ($true) {
    Get-NetAdapterStatistics -Name "Ethernet0" | 
    Select-Object Name, ReceivedErrors, OutboundErrors
    Start-Sleep -Seconds 5
}
Так можно «подсматривать» за интерфейсом в реальном времени. 👉 @win_sysadmin

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

$computers = "PC1","PC2","PC3"

foreach ($c in $computers) {
    Write-Host "Собираю данные с $c..."
    Get-WmiObject -Class Win32_ComputerSystem -ComputerName $c |
        Select-Object Name, Manufacturer, Model, TotalPhysicalMemory

    Get-WmiObject -Class Win32_OperatingSystem -ComputerName $c |
        Select-Object Caption, Version, OSArchitecture, LastBootUpTime
}
👉 Такой скрипт выдаст: - имя и модель ПК, - производителя, - объём RAM, - версию ОС, разрядность, - время последней загрузки. 💡 Если нужно массово собирать данные, удобнее результаты складывать в CSV:

$results = foreach ($c in $computers) {
    Get-WmiObject -Class Win32_OperatingSystem -ComputerName $c |
        Select-Object PSComputerName, Caption, Version, LastBootUpTime
}

$results | Export-Csv "C:\Temp\computers.csv" -NoTypeInformation -Encoding UTF8
В итоге получаем аккуратный файл с данными по всем машинам, который можно открыть в Excel и фильтровать по любым параметрам. 💬 А как вы ведёте инвентаризацию парка машин? Excel, CMDB, Intune, SCCM или свои самописные скрипты? 👉 @win_sysadmin

👋 Привет, админы! Накидал быстрый чек-скриптl, который опрашивает хосты/порты и показывает, когда сертификат сгорит. Быстрый чек одного хоста

$HostName = 'site.contoso.com'
$Port     = 443

$tcp = [Net.Sockets.TcpClient]::new($HostName, $Port)
$ssl = [Net.Security.SslStream]::new($tcp.GetStream(), $false, { $true })
$ssl.AuthenticateAsClient($HostName)

$cert = [Security.Cryptography.X509Certificates.X509Certificate2]::new($ssl.RemoteCertificate)
[pscustomobject]@{
  Host     = $HostName
  Port     = $Port
  Subject  = $cert.Subject
  NotAfter = $cert.NotAfter
  DaysLeft = [math]::Floor(($cert.NotAfter - (Get-Date)).TotalDays)
}

$ssl.Dispose(); $tcp.Close()
Скан нескольких целей + статус

$targets = @(
  'site1.contoso.com:443',
  'mail.contoso.com:993',
  'rdgw.contoso.com:443'
)

$result = foreach ($t in $targets) {
  $host,$port = $t.Split(':',2)
  try {
    $tcp = [Net.Sockets.TcpClient]::new($host,[int]$port)
    $ssl = [Net.Security.SslStream]::new($tcp.GetStream(), $false, { $true })
    $ssl.AuthenticateAsClient($host)

    $cert = [Security.Cryptography.X509Certificates.X509Certificate2]::new($ssl.RemoteCertificate)
    $days = [math]::Floor(($cert.NotAfter - (Get-Date)).TotalDays)

    [pscustomobject]@{
      Host     = $host
      Port     = [int]$port
      CN       = $cert.GetNameInfo('SimpleName',$false)
      NotAfter = $cert.NotAfter
      DaysLeft = $days
      Status   = if ($days -le 14) { '🔥 expiring ≤14d' }
                 elseif ($days -le 30) { '⚠️ <30d' }
                 else { '✅ ok' }
    }
  }
  catch {
    [pscustomobject]@{
      Host=$host; Port=[int]$port; CN=$null; NotAfter=$null; DaysLeft=$null
      Status="❌ error: $($_.Exception.Message)"
    }
  }
  finally {
    if ($ssl) { $ssl.Dispose() }
    if ($tcp) { $tcp.Close() }
  }
}

$result | Sort-Object DaysLeft | Format-Table -AutoSize
# Для отчёта:
# $result | Export-Csv .\tls_report.csv -NoTypeInformation -Encoding UTF8
Плюс: можно крутить по расписанию в Task Scheduler и слать уведомления, если DaysLeft ≤ 30. Спасает от «неожиданных» падений продакшна. 👉 @win_sysadmin