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

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


Админ - @maksimshap
Download Telegram
🗣 PowerShell: Заставь сервер поздравить тебя голосом

В Windows встроен мощный движок синтеза речи (TTS), который доступен из консоли без установки стороннего софта. Разыграйте коллегу или просто поднимите себе настроение, заставив сервер произнести тост.

Скрипт (копируй и вставляй):


# Подключаем сборку речи
Add-Type -AssemblyName System.Speech

# Создаем объект синтезатора
$synth = New-Object System.Speech.Synthesis.SpeechSynthesizer

# Настраиваем громкость (0-100)
$synth.Volume = 100

# Говорим! (На английском говорит отлично, на русском - зависит от установленных языковых пакетов)
$synth.Speak("Merry Christmas, Administrator. All systems are operational.")

Идея: Добавьте это в Login Script через GPO. Утром 1 января первый вошедший админ услышит голос сервера. 😈

#windows #powershell #fun #tts #scripting #adminlife
💾 PowerShell: Удаленная инвентаризация (Серийники)
Нужно собрать серийные номера серверов или ПК для гарантии/учета. Идти в серверную или просить пользователей лезть под стол не нужно. Используем CIM (современный аналог WMI).

Скрипт (сбор данных со списка компьютеров):


$Computers = "Server01", "Server02", "PC-Office-05"

foreach ($PC in $Computers) {
try {
$Bios = Get-CimInstance -ClassName Win32_Bios -ComputerName $PC -ErrorAction Stop
[PSCustomObject]@{
ComputerName = $PC
Serial = $Bios.SerialNumber
Manufacturer = $Bios.Manufacturer
Version = $Bios.SMBIOSBIOSVersion
}
} catch {
Write-Warning "Не удалось подключиться к $PC"
}
}

Pro Tip: Если нужно узнать модель материнской платы, поменяйте класс на Win32_BaseBoard и запросите свойство Product .

#windows #powershell #inventory #cim #scripting
🔄 PowerShell: Требует ли сервер перезагрузки?

Вы установили обновления или поменяли настройки, но не уверены, применились ли они.
Или планируете Maintenance Window и хотите знать, какие серверы нуждаются в рестарте. Windows прячет флаг "Pending Reboot" в реестре.

Простой скрипт, чтобы проверить это без GUI.

Команда:


$Reboot = Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired"
$CBS = Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending"
$Pending = $Reboot -or $CBS

if ($Pending) {
Write-Host "⚠️ ВНИМАНИЕ: Сервер ожидает перезагрузки!" -ForegroundColor Red
} else {
Write-Host " Перезагрузка не требуется." -ForegroundColor Green
}

Pro Tip: Оберните это в Invoke-Command -ComputerName (Get-Content servers.txt), чтобы проверить сразу всю инфраструктуру перед уходом на каникулы.

#windows #powershell #updates #maintenance #scripting #adminlife
2
🪟 PowerShell: Краткая сводка происшествий за праздники

Листать Event Viewer за 10 дней выходных — это боль. Вам нужно знать только одно: были ли критические ошибки?

Скрипт, который покажет только "Красные" события (Errors & Critical) за время праздников, сгруппированные по источникам.

Команда:


# Проверяем последние 7 дней
$Date = (Get-Date).AddDays(-7)

Get-WinEvent -FilterHashtable @{LogName='System'; Level=1,2; StartTime=$Date} -ErrorAction SilentlyContinue |
Group-Object ProviderName |
Select-Object Count, Name |
Sort-Object Count -Descending |
Format-Table -AutoSize

Результат: Вы увидите таблицу вроде:

* Disk — 5 ошибок (Стоит проверить RAID!)

* TermService — 1 ошибка (Ерунда)

Экономит часы кликанья мышкой.

#windows #powershell #eventlog #audit #monitoring #scripting
⏱️ PowerShell: Сколько сервер не перезагружался?

Босс спрашивает: "Когда последний раз патчили Exchange?" или "Почему сервер тормозит, может память утекла за месяц?". Заходить на каждый сервер по RDP, чтобы открыть диспетчер задач — это путь джуна.

Скрипт Архитектора, который покажет Uptime сразу по списку машин.

Скрипт:

$Servers = "SRV-DC01", "SRV-SQL01", "PC-Admin"

foreach ($S in $Servers) {
$OS = Get-CimInstance Win32_OperatingSystem -ComputerName $S -ErrorAction SilentlyContinue
if ($OS) {
$Uptime = (Get-Date) - $OS.LastBootUpTime
Write-Host "$S : $($Uptime.Days) дн. $($Uptime.Hours) ч." -ForegroundColor Green
} else {
Write-Host "$S : Недоступен" -ForegroundColor Red
}
}

Результат: SRV-DC01 : 45 дн. 12 ч. SRV-SQL01 : 0 дн. 4 ч.

Быстро, чисто, без лишних движений.

#windows #powershell #uptime #monitoring #scripting #adminlife
🐚 Bash: Шаблон «Пуленепробиваемого» скрипта

90% админских скриптов падают молча.
Например, cd /wrong/path не сработал, а следующая команда rm -rf * удалила всё в корне (утрирую, но суть ясна). В 2026 году мы используем Bash Strict Mode и Traps.

Код для начала любого скрипта:

#!/bin/bash
set -euo pipefail
IFS=$'\n\t'

# Функция очистки при выходе (даже аварийном)
cleanup() {
echo "🧹 Убираем мусор..."
rm -f /tmp/temp_*.txt
}

# Trap ловит сигналы выхода (EXIT, ошибка, Ctrl+C)
trap cleanup EXIT

echo "🚀 Начинаем работу..."
# Ваш код

Разбор магии:

1. set -e: Скрипт умрет сразу, если любая команда вернет ошибку.
2. set -u: Запрещает использовать пустые переменные (спасает от rm -rf /$UNDEFINED_VAR).
3. set -o pipefail: Ловит ошибки даже в середине конвейера (grep | awk).
4. trap: Гарантированно выполнит функцию cleanup, даже если скрипт упадет с ошибкой.

Это база. Не пишите в прод без этого хедера.

#linux #bash #scripting #devops #bestpractices #automation
PowerShell: Настоящая многопоточность с -Parallel

В старых версиях PowerShell (5.1) мы страдали с Start-Job (медленно) или Runspaces (сложно).
В PowerShell 7+ (который к 2026 году должен стоять везде) циклы ускоряются в 10-50 раз одной опцией.

Задача: Пингaнуть 100 серверов или проверить службу.
Обычный foreach будет делать это последовательно 5 минут.

Решение 2026 года:

$servers = 1..100 | ForEach-Object { "Server-$_" }

# Запускаем в 10 потоков одновременно
$results = $servers | ForEach-Object -Parallel {
# Внутри этого блока - отдельный поток
$s = $_
$check = Test-NetConnection -ComputerName $s -Port 443 -WarningAction SilentlyContinue

# Возвращаем объект (а не текст!)
[PSCustomObject]@{
Server = $s
Port443 = $check.TcpTestSucceeded
Time = (Get-Date).ToString("HH:mm:ss")
}
} -ThrottleLimit 10

# Красивый вывод
$results | Format-Table -AutoSize

Фишка: Параметр -ThrottleLimit регулирует нагрузку на вашу машину.
Это самый простой способ ускорить рутину админа.

#windows #powershell #scripting #performance #automation #sysadmin
🐧 Bash: Параллельный запуск задач без боли и GNU Parallel

Многие админы не знают, что для параллельного выполнения задач в скриптах не обязательно ставить тяжелые утилиты. В Bash есть встроенный механизм управления фоновыми процессами через wait. Это маст-хэв, когда нужно, например, одновременно проверить доступность 50 хостов или сжать 20 папок с логами. 📦

Пример «умного» скрипта:

#!/bin/bash

targets=("192.168.1.1" "192.168.1.2" "192.168.1.3") # и так далее

for ip in "${targets[@]}"; do
(
if ping -c 1 -W 1 "$ip" > /dev/null; then
echo " $ip доступен"
else
echo " $ip лежит"
fi
) & # Запуск в фоне
done

wait # Ждем завершения всех фоновых задач
echo "🎯 Все проверки завершены!"

Почему это OK:

1. Скорость: Скрипт выполняется за время самого долгого пинга, а не по очереди.
2. Простота: Никаких лишних зависимостей.
3. Контроль: Команда wait гарантирует, что скрипт не пойдет дальше, пока все «хвосты» не закроются.

#linux #bash #automation #sysadmin #performance #scripting 🛠️
🪟 Windows: Операторы && и || в PowerShell 7 — наконец-то как в Bash! ⛓️

Если ты перешел на PowerShell 7+ (а в 2026-м это стандарт), перестань писать громоздкие конструкции if ($?) { ... }. Теперь у нас есть Pipeline Chain Operators, которые работают так же, как в Linux.

Было (старый стиль):

Stop-Service "Spooler"
if ($?) { Start-Service "Spooler" }

Стало (Admin Future стиль):

# Выполнится ТОЛЬКО если первая команда успешна
Stop-Service "Spooler" && Start-Service "Spooler"

# Выполнится, если первая команда УПАЛА (обработка ошибок)
Connect-MgGraph || Write-Warning "Не удалось подключиться к облаку!"

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

#windows #powershell #scripting #devops #automation #sysadmin #pwsh
👍1🔥1👏1
🪟 Windows: История команд PowerShell — твой личный бортовой самописец 📝

Ты когда-нибудь тратил полчаса на то, чтобы вспомнить ту самую сложную команду с 5-ю фильтрами, которую писал месяц назад?
В PowerShell 7+ есть модуль PSReadLine, который хранит историю всех твоих команд в текстовом файле.

Как найти, где лежит твоя история:


(Get-PSReadLineOption).HistorySavePath

Лайфхак: поиск по истории как в Bash (Ctrl+R):
Нажми Ctrl+R в терминале и начни вводить часть команды — PowerShell сам найдет её в истории.


Совет: Чтобы история сохранялась между сессиями и была бесконечной, добавь в
$PROFILE: Set-PSReadLineOption -HistorySaveStyle SaveIncrementally

#windows #powershell #productivity #sysadmin #scripting #terminal #tips
🔥3👍1👏1