
- Главная
- Каталог
- Интернет технологии
- Системный Администратор Windows
Системный Администратор Windows
🖥️ Windows для системных администраторов: управление, оптимизация, безопасность. Полезные советы, лайфхаки, PowerShell-скрипты, автоматизация и практические решения для работы с серверами и рабочими станциями. Авторский канал.
Статистика канала
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
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
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
$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
$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
(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
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Отзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Системный Администратор Windows — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 3.1K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 9.9, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 6993.0 ₽, а за 15 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий