Admin Future
241 subscribers
51 photos
1 video
4 files
120 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
⚡ PowerShell: Ищем «тяжелые» файлы быстрее, чем проводник

Когда на диске Windows Server внезапно заканчивается место, стандартный поиск Windows — это мучение. 🐌 Через PowerShell можно выудить список самых больших файлов за считанные секунды и сразу отсортировать их.

Полезный скрипт для поиска ТОП-10 тяжеловесов:

# Ищем файлы больше 500Мб в папке C:\Shares
$path = "C:\Shares"
Get-ChildItem -Path $path -Recurse -File -ErrorAction SilentlyContinue |
Sort-Object Length -Descending |
Select-Object Name, @{Name="Size(GB)";Expression={$_.Length / 1GB}}, Directory |
Select-Object -First 10 |
Format-Table -AutoSize

Write-Host "📊 Сканирование завершено. Время чистить диски!" -ForegroundColor Cyan

Фишка: Параметр -ErrorAction SilentlyContinue позволяет скрипту не спотыкаться на системных папках, куда у админа нет доступа, и продолжать поиск. Вывод в гигабайтах сразу дает понять масштаб бедствия. 📈

#windows #powershell #sysadmin #storage #cleanup #automation 🧹
✍1👍1🔥1👏1
💿 Windows Storage: Как вычислить «паршивую овцу» в дисковом массиве?

Бывает, что сервер или кластер (S2D) начинает безбожно тупить, но все статусы светятся зеленым «Healthy». В 90% случаев проблема в одном диске, который еще не сдох, но уже «тормозит» весь массив огромными задержками (latency). 🐌

Стандартный мониторинг это часто пропускает, поэтому лезем под капот к счетчикам надежности (Reliability Counters).

🛠 Скрипт для поиска проблемных дисков:

Get-PhysicalDisk | ForEach-Object {
$disk = $_
$stats = $disk | Get-StorageReliabilityCounter

# Пытаемся выцепить имя узла (актуально для кластеров)
$NodeName = "Unknown"
if ($disk.FriendlyName -like "*.*") {
$NodeName = $disk.FriendlyName.Split(".")[1]
}

[PSCustomObject]@{
Node = $NodeName
Model = $disk.Model
MediaType = $disk.MediaType
SerialNumber = $disk.SerialNumber

# Конвертация: 100 наносекунд -> миллисекунды
ReadLatMax_ms = [math]::Round($stats.ReadLatencyMax / 10000, 2)
WriteLatMax_ms = [math]::Round($stats.WriteLatencyMax / 10000, 2)

ReadErrors = $stats.ReadErrorsTotal
WriteErrors = $stats.WriteErrorsTotal
}
} | Sort-Object WriteErrors, WriteLatMax_ms -Descending | Format-Table -AutoSize


📊 Как читать результат (нормативы):

1. Read/WriteLatMax_ms: Это пиковая задержка в миллисекундах.
* SSD: Норма до 20ms. Пики > 50ms — повод напрячься. ⚡
* HDD: Норма до 200ms. Пики > 1000ms (1 сек) — диск «умирает» или перегружен. 🐢

2. Read/WriteErrors: В идеальном мире здесь должен быть 0. Любое число больше нуля — это ошибки чтения/записи. Пора проверять кабели, бэкплейн или готовить замену диску. 🛠

💡 Когда запускать?

* Когда SQL или 1С начинают «фризить» без видимых причин. 📉
* При регламентном объезде серверов раз в месяц.
* Если диск периодически отваливается из RAID-массива.

Этот скрипт — твой рентген для дисковой подсистемы. Сохраняй в шпаргалки! 📝

#windows #powershell #storage #sysadmin #troubleshooting #s2d #hardware 🛡
👍3🔥1👏1