🗣 PowerShell: Заставь сервер поздравить тебя голосом
В Windows встроен мощный движок синтеза речи (TTS), который доступен из консоли без установки стороннего софта. Разыграйте коллегу или просто поднимите себе настроение, заставив сервер произнести тост.
Скрипт (копируй и вставляй):
Идея: Добавьте это в Login Script через GPO. Утром 1 января первый вошедший админ услышит голос сервера. 😈
#windows #powershell #fun #tts #scripting #adminlife
В 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).
Скрипт (сбор данных со списка компьютеров):
Pro Tip: Если нужно узнать модель материнской платы, поменяйте класс на
#windows #powershell #inventory #cim #scripting
Нужно собрать серийные номера серверов или ПК для гарантии/учета. Идти в серверную или просить пользователей лезть под стол не нужно. Используем 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.
Команда:
Pro Tip: Оберните это в Invoke-Command -ComputerName (Get-Content servers.txt), чтобы проверить сразу всю инфраструктуру перед уходом на каникулы.
#windows #powershell #updates #maintenance #scripting #adminlife
Вы установили обновления или поменяли настройки, но не уверены, применились ли они.
Или планируете 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) за время праздников, сгруппированные по источникам.
Команда:
Результат: Вы увидите таблицу вроде:
* Disk — 5 ошибок (Стоит проверить RAID!)
* TermService — 1 ошибка (Ерунда)
Экономит часы кликанья мышкой.
#windows #powershell #eventlog #audit #monitoring #scripting
Листать 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 сразу по списку машин.
Скрипт:
Результат: SRV-DC01 : 45 дн. 12 ч. SRV-SQL01 : 0 дн. 4 ч.
Быстро, чисто, без лишних движений.
#windows #powershell #uptime #monitoring #scripting #adminlife
Босс спрашивает: "Когда последний раз патчили 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.
Код для начала любого скрипта:
Разбор магии:
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
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 года:
Фишка: Параметр -ThrottleLimit регулирует нагрузку на вашу машину.
Это самый простой способ ускорить рутину админа.
#windows #powershell #scripting #performance #automation #sysadmin
В старых версиях 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 папок с логами. 📦
Пример «умного» скрипта:
Почему это OK:
1. Скорость: Скрипт выполняется за время самого долгого пинга, а не по очереди.
2. Простота: Никаких лишних зависимостей.
3. Контроль: Команда wait гарантирует, что скрипт не пойдет дальше, пока все «хвосты» не закроются.
#linux #bash #automation #sysadmin #performance #scripting 🛠️
Многие админы не знают, что для параллельного выполнения задач в скриптах не обязательно ставить тяжелые утилиты. В 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.
Было (старый стиль):
Стало (Admin Future стиль):
Почему это важно: Скрипты становятся читаемыми в одну строку. Это идеально для быстрых фиксов и админских задач "на лету". ⚡
#windows #powershell #scripting #devops #automation #sysadmin #pwsh
Если ты перешел на 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, который хранит историю всех твоих команд в текстовом файле.
Как найти, где лежит твоя история:
Совет: Чтобы история сохранялась между сессиями и была бесконечной, добавь в
#windows #powershell #productivity #sysadmin #scripting #terminal #tips
Ты когда-нибудь тратил полчаса на то, чтобы вспомнить ту самую сложную команду с 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