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

Авторский канал.
Download Telegram
👋 Привет, админы!

После обновления Windows Server 2022 один из сервисов перестал стартовать при загрузке, хотя в Services.msc он стоит на Automatic.

Оказалось, что проблема в том, что Windows теперь иногда «умно» откладывает запуск сервисов, помеченных как Automatic (Delayed Start), особенно если система решает, что «надо разгрузить старт».

💡 Решение нашлось простое: проверяем и меняем тип запуска на обычный Automatic через PowerShell:


Set-Service -Name "Имя_сервиса" -StartupType Automatic


А если надо массово проверить и поправить сразу несколько сервисов, которые почему-то стоят на Delayed Start:


Get-Service | Where-Object { $_.StartType -eq 'AutomaticDelayedStart' } |
ForEach-Object { Set-Service -Name $_.Name -StartupType Automatic }


После перезагрузки - всё взлетело как надо 🚀.

👉 @win_sysadmin
👍3🤡2
👋 Привет, админы!

Был случай, на одном Windows Server начали рандомно падать службы, но без явных ошибок в Event Viewer. Логика подсказывала, что дело в правах или зависших сессиях, и, как оказалось, виновником была учетная запись сервиса с истекшим паролем.

Чтобы быстро найти все службы, которые запускаются от нестандартных учетных записей (и проверить, не пора ли менять пароль), есть удобная команда PowerShell:


Get-WmiObject Win32_Service |
Where-Object { $_.StartName -notmatch "LocalSystem|LocalService|NetworkService" } |
Select-Object Name, StartName, State


💡 Эта команда выведет список служб с указанием учетной записи и текущего состояния. Очень удобно перед массовым обновлением паролей или аудитом безопасности.

📌 Дополнительно советую настроить напоминание, чтобы раз в квартал проверять пароли сервисных аккаунтов, меньше будет «сюрпризов» в выходные.

👉 @win_sysadmin
👍81
👋 Привет, админы!

Был случай - Windows Server перестал пускать пользователей по RDP. Ошибка в логах: CredSSP encryption oracle remediation. Классика жанра после свежих обновлений.

💡 Решение оказалось простым: нужно на время ослабить политику проверки CredSSP, чтобы пустить людей, а потом уже обновить клиента.

Сделал так через PowerShell:


Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\CredSSP\Parameters' `
-Name AllowEncryptionOracle -Value 2 -Type DWord


Значения параметра:

* 0 - запрет небезопасных подключений
* 1 - только с предупреждением
* 2 - разрешить подключение (временно!)

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

👉 @win_sysadmin
👍4
👋 Привет, админы!

На днях словил кейс: один Windows Server после перезагрузки не поднимал часть сервисов. Лезу в Services.msc - половина служб в состоянии "Starting...", висят и не доходят до Running. Пользователи, конечно, в панике 🙃

📌 Оказалось, что проблема была в том, что несколько зависимых служб стартовали в неправильном порядке. В логах ошибка 7000/7001 (Service Control Manager).

🔥 Быстро проверить состояние всех служб удобно через PowerShell:


Get-Service | Where-Object {$_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic'} | Select-Object DisplayName,Name


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

👉 Если надо принудительно запустить такие службы:


Get-Service | Where-Object {$_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic'} | Start-Service


После прогона сервак ожил, все сервисы поднялись, а пользователи снова счастливы 😊

Лайфхак: если у вас такое повторяется часто настройте delayed start для "тяжелых" сервисов или проверьте зависимые службы. Это реально экономит нервы.

👉 @win_sysadmin
👍5
👋 Привет, админы!

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

Бывает так, что служба на Windows Server переходит в состояние "Stopping", и ни остановить, ни перезапустить её обычными средствами нельзя. Висит мёртвым грузом, блокируя работу приложения.

🔥 Решение: небольшой скрипт на PowerShell, который убивает процесс, связанный со службой:


$serviceName = "wuauserv" # сюда вписываем имя службы
$service = Get-WmiObject win32_service -Filter "name='$serviceName'"
Stop-Process -Id $service.ProcessId -Force


После этого службу можно спокойно стартануть:


Start-Service -Name $serviceName


💡Лайфхак: такой скрипт можно положить в .ps1 и запускать от имени администратора, когда что-то "подвисло". Особенно актуально для обновлений и антивирусов, которые любят залипать.

👉 @win_sysadmin
🔥31👍1
👋 Привет, админы!

Из личного опыта: один сервер Windows Server 2019 стал жутко тормозить, при этом процессор был свободен, а памяти хватало. Логично, лезем в Resource Monitor и видим: диск забит I/O под завязку.

Чтобы быстро найти виновника, я использовал PowerShell:


Get-Process | Sort-Object -Property IOReadBytes -Descending | Select-Object -First 10 Name, Id, IOReadBytes, IOWriteBytes


Эта команда показывает топ процессов по дисковым операциям. У меня оказался какой-то бэкапный агент, который ушёл в бесконечный цикл.

В таких случаях бывает полезно и вот это:


Get-Process | Sort-Object -Property IOWriteBytes -Descending | Select-Object -First 10 Name, Id, IOWriteBytes


- чтобы понять, кто именно засирает диск записями.

📌 В итоге отключил глючный сервис, нагрузка упала, сервер ожил.

💬 А вы как мониторите дисковую активность? Используете PowerShell, perfmon, сторонние тулзы вроде iometer, Sysinternals Process Explorer?

👉 @win_sysadmin
👍91🔥1
♻️ Как сисадмину легально избавиться от кладбища старого железа и получить за это премию

У каждого админа есть своя тайная комната боли. Тот самый склад, под завязку забитый мертвыми свичами, пухлыми батареями от ИБП, горами старых мониторов и сгоревшими серверами эпохи DDR3. Выкинуть это добро в мусорный контейнер нельзя по закону (экология, штрафы, учет драгметаллов), а чтобы списать официально - нужно пройти семь кругов бюрократического ада с бухгалтерией 🤦‍♂️

Ребята из УтильЭко предлагают решение этой проблемы. Они забирают весь этот зоопарк, сами закрывают вопросы с документами, а вам за организацию процесса выплачивают партнерский бонус.

Как это работает на практике:

🟢 Полный легал для бухгалтерии. Работа идет строго по лицензиям. На выходе ваша компания получает полный пакет закрывающих документов (акты утилизации, паспорта отходов) по всем стандартам 2026 года. Бухгалтеры будут счастливы, юристы спокойны.
🟢 Оценка за 48 часов. Просто выгружаете спецификацию (список железа) и скидываете менеджеру. Через двое суток у вас на руках готовый расчет и условия.
🟢 Никакой физической боли. Логистику, заказ пропусков, грузчиков и вывоз берут на себя. Рвать спину, вытаскивая тяжеленные 4U-шасси и ИБП в Газель, вам не придется.
🟢 Двойная выгода. Относительно ликвидное железо (старые ноутбуки, серверы, СХД) они выкупают, принося вашей компании живые деньги. А откровенный неликвид и мусор - легально утилизируют.

А теперь самое интересное для тех, кто инициирует процесс. За помощь в организации контракта со своей компанией (или вашими клиентами на аутсорсе) УтильЭко выплачивает ИТ-специалисту 20% от суммы сделки. По сути, вы наводите порядок на собственном складе чужими руками и получаете за это отличную премию к зарплате 💸

Если подсобка уже ломится от древнего легаси, пишите менеджеру для консультации и быстрой оценки спецификации:
📩 @izik30

Подробнее прочитать про ребят можно тут ➡️ УтильЭко - утилизация техники для юридических лиц

Реклама. ООО «УТИЛЬЭКО», ИНН: 6685221390, erid: 2Vtzqx6Q4vi
👍4🖕2
👋 Привет, админы!

Однажды произошел интересный случай: Windows Server 2019 начал странно грузить диск - процент активности подскакивает до 100%, а скорость чтения/записи при этом смешная. Сначала подумал на «умирающий» HDD, но диск был SSD и в порядке.

🔍 Виновником оказался Superfetch (SysMain) - служба, которая подгружает часто используемые данные в память. На рабочих станциях это иногда ускоряет запуск приложений, но на сервере с ограниченными ресурсами может наоборот создать узкое место.

📌 Быстро проверить, кто именно грузит диск, можно так:


Get-Process | Sort-Object IOReadBytes, IOWriteBytes -Descending |
Select-Object -First 10 -Property ProcessName, Id, IOReadBytes, IOWriteBytes


А отключить SysMain - вот так:


Stop-Service -Name "SysMain" -Force
Set-Service -Name "SysMain" -StartupType Disabled


После этого нагрузка сразу упала, сервер задышал нормально.

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

👉 @win_sysadmin
👍81🔥1💋1
👋 Привет, админы!

Кейс, пользователи жаловались, что RDP подключение стало "подвисать" или разрывается, а на сервере при этом всё вроде бы нормально.

🔥 Быстрый способ проверить, кто сейчас подключен по RDP и откуда, - это команда:


quser


Она покажет список активных сессий, пользователей и их состояния.

Если хочется автоматизировать и видеть больше деталей (например, IP-адреса подключений), то можно использовать PowerShell:


Get-CimInstance Win32_LogonSession -Filter "LogonType = 10" |
ForEach-Object {
$logon = $_
Get-CimAssociatedInstance -InputObject $logon -ResultClassName Win32_LoggedOnUser |
ForEach-Object {
[PSCustomObject]@{
User = $_.Antecedent.Name
Domain = $_.Antecedent.Domain
LogonId = $logon.LogonId
StartTime = $logon.StartTime
}
}
}


А если нужно посмотреть, с какого IP-шника юзер коннектится, то тут уже помогает журнал событий:


Get-WinEvent -LogName "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational" |
Where-Object { $_.Id -eq 1149 } |
Select-Object TimeCreated, @{n='User';e={$_.Properties[1].Value}}, @{n='IP';e={$_.Properties[2].Value}} |
Sort-Object TimeCreated -Descending | Select-Object -First 10


👉 @win_sysadmin
👍8🔥6
👋 Привет, админы!

Мини-лайфхак из области hardening. Один из первых шагов при проверке безопасности сервера - убедиться, что в локальной группе Administrators нет лишних пользователей. Иногдп туда "по ошибке" добавляют кого угодно - от сервисных аккаунтов до обычных юзеров.

🛠️ Проверить состав группы можно так:


Get-LocalGroupMember -Group "Administrators"


Команда сразу покажет всех участников: локальных пользователей, группы и даже доменные аккаунты, если машина в AD.

Для быстрой проверки в доменной среде удобно прогнать скрипт сразу по всем серверам:


$servers = @("srv01","srv02","srv03")
foreach ($s in $servers) {
Invoke-Command -ComputerName $s -ScriptBlock {
Write-Host "===== $env:COMPUTERNAME ====="
Get-LocalGroupMember -Group "Administrators"
}
}


Так можно сразу отловить "левые" учётки на всех узлах.

💡Добавьте регулярный аудит этой группы в свои скрипты мониторинга или через GPO/Defender for Identity. Часто именно здесь прячется backdoor.

👉 @win_sysadmin
👍6🔥2
👋 Привет, админы!

Бывает такое, что сервер достался “по наследству”, всё вроде работает, но внутри - куча сюрпризов. Один из самых частых - в локальных администраторах сидят учётки, о которых никто и не помнит.

🔥 Для быстрой диагностики можно прогнать вот такой скрипт:


$admins = Get-LocalGroupMember -Group "Administrators"
$admins | Select-Object Name, ObjectClass, PrincipalSource


Здесь сразу видно: это локальный пользователь, доменный, или кто-то притащен через группу. Поле PrincipalSource подскажет, откуда взялся доступ.

А если нужно найти только “подозрительных” локальных юзеров, можно сделать так:


$admins | Where-Object { $_.ObjectClass -eq 'User' -and $_.PrincipalSource -eq 'Local' }


👌 Очень полезно проверять такие вещи на серверах после изменений или перед аудитом безопасности. У меня однажды всплыл старый техаккаунт с правами админа, который никто не использовал уже несколько лет.

👉 @win_sysadmin
👍9
👋 Привет, админы!

На днях поймал «скрытый» источник проблем: сервер вроде живой, патчи ставятся, но после обновлений часть софта ведёт себя странно. Виновник - ожидающая перезагрузка (pending reboot), про которую забыли. Решил поделиться быстрой проверкой по паре десятков машин.

🔥 Функция PowerShell, которая показывает признаки pending reboot локально или удалённо (через WinRM):


function Test-PendingReboot {
[CmdletBinding()]
param(
[string[]]$ComputerName = $env:COMPUTERNAME
)

Invoke-Command -ComputerName $ComputerName -ScriptBlock {
$cbs = Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending'
$wu = Test-Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired'

$pfr = (Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager' `
-Name 'PendingFileRenameOperations' -ErrorAction SilentlyContinue
).PendingFileRenameOperations
$pendingFile = ($pfr -is [array] -and $pfr.Count -gt 0) -or ($pfr -is [string] -and $pfr.Length -gt 0)

$rename = (Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName' `
-Name 'ComputerName' -ErrorAction SilentlyContinue
).ComputerName -ne
(Get-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName' `
-Name 'ComputerName' -ErrorAction SilentlyContinue
).ComputerName

[PSCustomObject]@{
ComputerName = $env:COMPUTERNAME
CBS = $cbs
WindowsUpdate = $wu
PendingFile = $pendingFile
Rename = $rename
Pending = $cbs -or $wu -or $pendingFile -or $rename
}
} | Sort-Object Pending -Descending, ComputerName
}


⚙️ Пример использования по списку серверов и экспорт в отчёт:


$servers = 'srv01','srv02','srv03'
Test-PendingReboot -ComputerName $servers |
Tee-Object -FilePath .\PendingReboot.csv


💡Аккуратный перезапуск только тех, у кого Pending -eq $true (сначала обязательно с -WhatIf!):


$toReboot = Test-PendingReboot -ComputerName $servers | Where-Object Pending
$toReboot.ComputerName | Restart-Computer -Force -Wait -For PowerShell -Timeout 600 -Delay 5 -WhatIf


Итог: такой мини-аудит часто спасает от «мистики» после патчей и помогает планировать окна на рестарт.

💬 А вы как отслеживаете pending reboot в проде - через Zabbix/PRTG, скриптами по расписанию или отдаёте это WSUS/Intune? Поделитесь практикой!

👉 @win_sysadmin
👍6
👋 Привет, админы!

Недавно был случай: RDP сессия вроде поднимается, но сразу выкидывает ошибку. Пользователь уверен, что "сервер умер", но на деле виновата была… сетевая политика шифрования.

Когда возникают такие проблемы, я начинаю с базовой диагностики:

1️⃣ Проверяю, что на сервере реально включен RDP:


(Get-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server").fDenyTSConnections


Если вернёт 1 - значит подключения запрещены. Лечим так:


Set-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Terminal Server" -Name fDenyTSConnections -Value 0


2️⃣ Проверяю, не задушил ли доступ фаервол:


Get-NetFirewallRule -DisplayGroup "Remote Desktop"


Все правила должны быть включены (Enabled : True).

3️⃣ И финальная проверка - соответствует ли клиент требуемому уровню шифрования. Иногда помогает понизить уровень на сервере:


Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name SecurityLayer -Value 1


(где 0 – без шифрования, 1 – RDP Security Layer, 2 – SSL).

🔥 Итог: в моём случае стояло 2 (SSL), а сертификат был битый. Переключил на 1, и вход сразу заработал.

💬 А у вас часто встречаются проблемы именно из-за криптополитик и сертификатов при RDP? Или в проде сразу подкручиваете свои шаблоны GPO?

👉 @win_sysadmin
👍8
🚀 Подборка полезных 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 Свежие новости Москвы
👎9👍2
👋 Привет, админы!

Накидал быстрый чек-скрипт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
👍7🔥1
👋 Привет, админы!

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

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

🔥 Проверить статистику адаптеров можно так:


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
👍12🔥1
🚀 Подборка полезных 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 Свежие новости Москвы
💩8👍1
👋 Привет, админы!

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

Сегодня напомню про недооценённый инструмент - 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
👍7🔥3