Подборка скриптов PowerShell для работы с Azure, Active Directory, SCCM, SCSM, Exchange, O365 и тд
Примеры скриптов
Новый пароль
https://github.com/lazywinadmin/PowerShell
👉 @sysadminof
Примеры скриптов
Новый пароль
function New-Password {
<#
.SYNOPSIS
Function to Generate a new password.
.DESCRIPTION
Function to Generate a new password.
By default it will generate a 12 characters length password, you can change this using the parameter Length.
I excluded the following characters: ",',.,/,1,<,>,`,O,0,l,|
Some of those are ambiguous characters like 1 or l or |
You can add exclusion by checking the following ASCII Table http://www.asciitable.com/
If the length requested is less or equal to 4, it will generate a random password.
If the length requested is greater than 4, it will make sure the password contains an Upper and Lower case letter, a Number and a special character
.PARAMETER Length
Specifies the length of the password.
Default is 12 characters
.PARAMETER Count
Specifies how many password you want to output.
Default is 1 password.
.EXAMPLE
PS C:\> New-Password -Length 30
=E)(72&:f\W6:VRGE(,t1x6sZi-346
.EXAMPLE
PS C:\> New-Password 3
!}R
.NOTES
See ASCII Table http://www.asciitable.com/
Code based on a blog post of https://mjolinor.wordpress.com/2014/01/31/random-password-generator/
.LINK
https://github.com/lazywinadmin/PowerShell
#>
[CmdletBinding()]
PARAM
(
[ValidateNotNull()]
[int]$Length = 12,
[ValidateRange(1, 256)]
[Int]$Count = 1
)#PARAM
BEGIN {
# Create ScriptBlock with the ASCII Char Codes
$PasswordCharCodes = { 33..126 }.invoke()
# Exclude some ASCII Char Codes from the ScriptBlock
# Excluded characters are ",',.,/,1,<,>,`,O,0,l,|
# See http://www.asciitable.com/ for mapping
34, 39, 46, 47, 49, 60, 62, 96, 48, 79, 108, 124 | ForEach-Object -Process { [void]$PasswordCharCodes.Remove($_) }
$PasswordChars = [char[]]$PasswordCharCodes
}#BEGIN
PROCESS {
1..$count | ForEach-Object -Process {
# Password of 4 characters or longer
IF ($Length -gt 4) {
DO {
# Generate a Password of the length requested
$NewPassWord = $(foreach ($i in 1..$length) { Get-Random -InputObject $PassWordChars }) -join ''
}#Do
UNTIL (
# Make sure it contains an Upercase and Lowercase letter, a number and another special character
($NewPassword -cmatch '[A-Z]') -and
($NewPassWord -cmatch '[a-z]') -and
($NewPassWord -imatch '[0-9]') -and
($NewPassWord -imatch '[^A-Z0-9]')
)#Until
}#IF
# Password Smaller than 4 characters
ELSE {
$NewPassWord = $(foreach ($i in 1..$length) { Get-Random -InputObject $PassWordChars }) -join ''
}#ELSE
# Output a new password
Write-Output $NewPassword
}
} #PROCESS
END {
# Cleanup
Remove-Variable -Name NewPassWord -ErrorAction 'SilentlyContinue'
} #END
} #Function
https://github.com/lazywinadmin/PowerShell
👉 @sysadminof
⚠️ До старта курса «Administrator Linux. Basic» осталось совсем немного. Набор закрывается 27 июня.
👉 Успейте пройти вступительный тест и получить запись двух вебинаров бесплатно:
— «Что нужно знать, когда переходишь с Windows на Linux. Базовые понятия Linux, работа в консоли с базовыми командами»
— «Вся правда о рынке труда или как быть востребованным в современных реалиях»
💪 Курс построен так, чтобы даже без опыта в Linux вы быстро вошли в профессию. В программе только актуальное: Bash, сети, логика работы ОС, файловые системы и автоматизация.
👉 Пройдите бесплатное вступительное тестирование сегодня и получите запись двух вебинаров: https://vk.cc/cNd9tB
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👉 Успейте пройти вступительный тест и получить запись двух вебинаров бесплатно:
— «Что нужно знать, когда переходишь с Windows на Linux. Базовые понятия Linux, работа в консоли с базовыми командами»
— «Вся правда о рынке труда или как быть востребованным в современных реалиях»
💪 Курс построен так, чтобы даже без опыта в Linux вы быстро вошли в профессию. В программе только актуальное: Bash, сети, логика работы ОС, файловые системы и автоматизация.
👉 Пройдите бесплатное вступительное тестирование сегодня и получите запись двух вебинаров: https://vk.cc/cNd9tB
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
This media is not supported in your browser
VIEW IN TELEGRAM
Утилита отображает информацию о текущем состоянии ядра, выводит данные о загруженных в ядро модулях и позволяет работать с ними.
https://github.com/orhun/kmon
👉 @sysadminof
Please open Telegram to view this post
VIEW IN TELEGRAM
Powershell суточный отчет по пользователям из ActiveDirectory
Раз в сутки (через планировщик задач) скрипт опрашивает
🔘 ActiveDirectory на предмет:
🔘 Всего пользователей
🔘 Сколько активных
🔘 Сколько служебных
🔘 Сколько заблокированных
🔘 Сколько новых
После выполнения получаем файлик с текущей датой в папке temp.
👉 @sysadminof
Раз в сутки (через планировщик задач) скрипт опрашивает
$Date = Get-Date -Format "dd MMMM yyyy HH:mm"
$AllUsers = (Get-AdUser -Filter * | ?{$_.name -notmatch 'Healthmailbox'}).count
$ActiveUsers = (Get-ADUser -Filter {Enabled -eq $true} | ?{$_.name -notmatch 'Healthmailbox'}).count
$DisabledUsers = (Get-ADUser -Filter {Enabled -eq $false} | ?{$_.name -notmatch 'Healthmailbox'}).count
$StartDate = (Get-Date).AddDays(-1)
$EndDate = (Get-Date).AddDays(+1)
$Zapros = Get-ADUser -Filter * -Properties Created | Where-Object {$_.Created -gt $StartDate -and $_.Created -le $EndDate}
$NewUsers = ($Zapros).count
$OFS = "`r`n" #`r`n`r`n
"$($WhoUsers = $Zapros | foreach {$_.Name })"
$NotSurname = Get-ADUser -filter "Enabled -eq '$true' -and Surname -notlike '*' -and Name -ne 'Healthmailbox'"
$NotFIO = ($NotSurname).count
$Message = "На $Date в ActiveDirectory всего пользователей $AllUsers из них: `nАктивных: $ActiveUsers из них служебные: $NotFIO. `nЗаблокированных: $DisabledUsers. `nНовых пользователей: $NewUsers `r`n`r`n$WhoUsers"
$Message | Out-File -FilePath "C:\temp\$(Get-Date -Format "dd MMMM yyyy")-UsersAD.txt"
После выполнения получаем файлик с текущей датой в папке temp.
👉 @sysadminof
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Создание SSH ключа, настройка SSH-сервера, клиента, проброс портов
⏱️ Таймкоды:
0:00 Вступление
0:28 Теория про SSH
1:32 Создание ключей
3:48 Подключение
4:43 Добавление ключа
9:42 Настройка сервера
12:19 Настройка клиента
14:00 Проброс порта
источник
👉 @sysadminof
⏱️ Таймкоды:
0:00 Вступление
0:28 Теория про SSH
1:32 Создание ключей
3:48 Подключение
4:43 Добавление ключа
9:42 Настройка сервера
12:19 Настройка клиента
14:00 Проброс порта
источник
👉 @sysadminof
Forwarded from Системный Администратор Windows
👋 Привет, админы!
Недавно на одном из серверов столкнулся с проблемой: служба Windows Update зависала в статусе "Ожидание другого установщика". Перезапуск сервиса не помогал, обновления не ставились, а WSUS-задание висело вечно.
💡 Решение оказалось простым, но неочевидным — кто-то (привет, SCCM или ручной запуск MSI) заблокировал установщик Windows Installer.
📌 Что делать:
1. Проверяем, нет ли зависших процессов установщика:
2. Если что-то висит — снимаем задачу:
3. Чистим временные каталоги обновлений:
4. И главное — проверяем, не заблокирована ли установка:
Если ничего подозрительного нет — можно запускать установку обновлений повторно.
🧩 В моем случае зависший
💬 А у вас бывали подобные подвисания с Windows Update? Как решаете — через PowerShell, скрипты или руками? Делитесь!
👉 @win_sysadmin
Недавно на одном из серверов столкнулся с проблемой: служба Windows Update зависала в статусе "Ожидание другого установщика". Перезапуск сервиса не помогал, обновления не ставились, а WSUS-задание висело вечно.
💡 Решение оказалось простым, но неочевидным — кто-то (привет, SCCM или ручной запуск MSI) заблокировал установщик Windows Installer.
📌 Что делать:
1. Проверяем, нет ли зависших процессов установщика:
Get-Process -Name msiexec
2. Если что-то висит — снимаем задачу:
Stop-Process -Name msiexec -Force
3. Чистим временные каталоги обновлений:
net stop wuauserv
Remove-Item -Path "C:\Windows\SoftwareDistribution\Download\*" -Recurse -Force
net start wuauserv
4. И главное — проверяем, не заблокирована ли установка:
Get-WmiObject -Class Win32_Process | Where-Object { $_.Name -like "*msi*" }
Если ничего подозрительного нет — можно запускать установку обновлений повторно.
🧩 В моем случае зависший
msiexec.exe
не давал поставить ни одно обновление — после его убийства всё пошло как по маслу.💬 А у вас бывали подобные подвисания с Windows Update? Как решаете — через PowerShell, скрипты или руками? Делитесь!
👉 @win_sysadmin
📕 Практикум по построению карты сети из базы данных маршрутизаторов для сетевых инженеров, архитекторов и администраторов сетей, а также технических руководителей
На открытом уроке 3 июля в 20:00 мск мы погрузимся в тонкости работы с OSPF Deep Dive:
📗 На вебинаре разберём:
1. Как устроена база данных OSPF (LSDB) и чем она отличается от итоговой таблицы маршрутизации;
2. Как интерпретировать LSA-сообщения для построения полной топологии сети;
📘 В результате на практике разберетесь в построении карты сети из LSDB на примере реального дампа и освоите навыки анализа LSDB.
👉 Регистрация и подробности о курсе Дизайн сетей ЦОД: https://vk.cc/cNjLmK
Все участники открытого урока получат скидку на курс "Дизайн сетей ЦОД"
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
На открытом уроке 3 июля в 20:00 мск мы погрузимся в тонкости работы с OSPF Deep Dive:
📗 На вебинаре разберём:
1. Как устроена база данных OSPF (LSDB) и чем она отличается от итоговой таблицы маршрутизации;
2. Как интерпретировать LSA-сообщения для построения полной топологии сети;
📘 В результате на практике разберетесь в построении карты сети из LSDB на примере реального дампа и освоите навыки анализа LSDB.
👉 Регистрация и подробности о курсе Дизайн сетей ЦОД: https://vk.cc/cNjLmK
Все участники открытого урока получат скидку на курс "Дизайн сетей ЦОД"
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Media is too big
VIEW IN TELEGRAM
ТРАБЛШУТИНГ LINUX // Основные команды, примеры
⏱️ Таймкоды:
0:00 Вступление
0:08 Мониторинг
0:43 Место на дисках
2:39 Состояние дисков
5:15 Нагрузка на диски
5:55 Процессор
8:17 Оперативная память
9:17 Процессы
10:46 Сеть
17:30 Логи
источник
👉 @sysadminof
⏱️ Таймкоды:
0:00 Вступление
0:08 Мониторинг
0:43 Место на дисках
2:39 Состояние дисков
5:15 Нагрузка на диски
5:55 Процессор
8:17 Оперативная память
9:17 Процессы
10:46 Сеть
17:30 Логи
источник
👉 @sysadminof
DevOps и SRE: конкуренты или союзники в борьбе за надёжность?
Где заканчивается зона ответственности DevOps-инженера и начинается область контроля SRE?
Приглашаем на открытый урок, где разберём разницу между подходами DevOps и SRE, особенно — в контексте Service Level Indicators (SLI), Service Level Objectives (SLO) и Service Level Agreements (SLA).
✅ Вы узнаете, как эти практики помогают создавать надёжную платформу и кто за что отвечает в команде.
📌 Обсудим как DevOps и SRE трактуют «качество платформы». И кто за какими метриками следит: производительность, аптайм, алерты, ошибки
⬆️ Протестируй курс «SRE практики и инструменты» на открытом уроке: https://vk.cc/cNl1Tu
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Где заканчивается зона ответственности DevOps-инженера и начинается область контроля SRE?
Приглашаем на открытый урок, где разберём разницу между подходами DevOps и SRE, особенно — в контексте Service Level Indicators (SLI), Service Level Objectives (SLO) и Service Level Agreements (SLA).
✅ Вы узнаете, как эти практики помогают создавать надёжную платформу и кто за что отвечает в команде.
📌 Обсудим как DevOps и SRE трактуют «качество платформы». И кто за какими метриками следит: производительность, аптайм, алерты, ошибки
⬆️ Протестируй курс «SRE практики и инструменты» на открытом уроке: https://vk.cc/cNl1Tu
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
20 команд мониторинга Linux, которые вы должны знать
Если вы работаете системным администратором / администратором Linux / DevOps / SRE, то, скорее всего, вам придется решать проблемы, связанные с производительностью, в среде Linux.
Давайте рассмотрим некоторые из наиболее часто используемых утилит командной строки Linux для диагностики проблем, связанных с сетью и производительностью.
1. Top
2. vmstat
3. iostat
4. iostat-d
5. lsof
6. tcpdump
8. netstat-s
9. ps -ef |grep PID
10. nethogs
11. mpstat
12. free-m
13. uptime
14. ps -e
15. ac
16. ac-d
17. ac -p
18. vmstat-m
19. vmstat–d
20. pstree
➡️ https://telegra.ph/20-komand-monitoringa-Linux-kotorye-vy-dolzhny-znat-07-02
👉 @sysadminof
Если вы работаете системным администратором / администратором Linux / DevOps / SRE, то, скорее всего, вам придется решать проблемы, связанные с производительностью, в среде Linux.
Давайте рассмотрим некоторые из наиболее часто используемых утилит командной строки Linux для диагностики проблем, связанных с сетью и производительностью.
1. Top
2. vmstat
3. iostat
4. iostat-d
5. lsof
6. tcpdump
8. netstat-s
9. ps -ef |grep PID
10. nethogs
11. mpstat
12. free-m
13. uptime
14. ps -e
15. ac
16. ac-d
17. ac -p
18. vmstat-m
19. vmstat–d
20. pstree
👉 @sysadminof
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезные команды Linux. Атрибуты файлов
Разрешает только добавление данных в файл
Игнорировать данный файл при создании резервной копии с помощью программы dump
Разрешить ядру автоматически сжимать/разжимать содержимое файла
Защита файла от каких либо изменений или манипуляций: редактирование, перемещение, удаление, создание ссылок на него
Определяет, будет-ли при сохранении изменений, произведена синхронизация, как при использовании команды sync
При удалении файла с данным атрибутом, его будет сохранено, что-бы оставить пользователю возможность восстановить данные в случае необходимости
Позволяет безвозвратное удаление данного файла. При удалении файла с этим атрибутом, место на диске, занимаемое файлом, перезаписывается нулями, после чего файл уже не подлежит восстановлению
Листинг файлов с атрибутами
👉 @sysadminof
# chattr +a file
Разрешает только добавление данных в файл
# chattr +d file
Игнорировать данный файл при создании резервной копии с помощью программы dump
# chattr +c file
Разрешить ядру автоматически сжимать/разжимать содержимое файла
# chattr +i file1
Защита файла от каких либо изменений или манипуляций: редактирование, перемещение, удаление, создание ссылок на него
# chattr +S file1
Определяет, будет-ли при сохранении изменений, произведена синхронизация, как при использовании команды sync
# chattr +u file1
При удалении файла с данным атрибутом, его будет сохранено, что-бы оставить пользователю возможность восстановить данные в случае необходимости
# chattr +s file1
Позволяет безвозвратное удаление данного файла. При удалении файла с этим атрибутом, место на диске, занимаемое файлом, перезаписывается нулями, после чего файл уже не подлежит восстановлению
# lsattr
Листинг файлов с атрибутами
👉 @sysadminof