Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Возглавьте армию своей страны в войне с коварным врагом. Управляйте ресурсами, принимайте ключевые решения и ведите Граднар через суровый конфликт. Ваши действия определяют будущее, приводя страну к победе или поражению.

Симулятор войны: 1985

Мидкорные, Стратегии, Симуляторы

Играть

Топ прошлой недели

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
15
hypo69
hypo69
25 дней назад
Лига Сисадминов
Серия Философия PowerShell

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView)⁠⁠

Дисклеймер. В пикабу нет редактора кода - поэтому такое форматирование и картинки. В конце поста я дам ссылку на github. Почитайте, и если вам интересно, смотрите код на гитхабе.

Каждый раз, когда вы делаете фотографию, ваша камера записывает в файл не только само изображение, но и служебную информацию: модель камеры и объектива, дату и время съемки, выдержку, диафрагму, ISO, GPS-координаты. Эти данные называются EXIF (Exchangeable Image File Format).

Хотя PowerShell имеет встроенные средства для чтения некоторых метаданных, они ограничены. Чтобы получить доступ ко всей информации, нужен специализированный инструмент. В этой статье я использую ExifTool.

ExifTool — это бесплатная, кросс-платформенная утилита с открытым исходным кодом, написанная Филом Харви. Она является золотым стандартом для чтения, записи и редактирования метаданных в самых разных форматах файлов (изображения, аудио, видео, PDF и др.). ExifTool знает тысячи тегов от сотен производителей устройств, что делает его самым всеобъемлющим инструментом в своем классе.

Скачивание ExifTool и правильная настройка

Прежде чем писать код, нужно подготовить саму утилиту.

  1. Зайдите на официальный сайт ExifTool: https://exiftool.org/. На главной странице найдите и скачайте "Windows Executable".

  2. Переименование (Критически важный шаг!): Скачанный файл будет называться exiftool(-k).exe. Это не случайность, а специальная функция для удобства пользователей, которые работают с программой через графический интерфейс Windows, а не через командную строку.

Переименуйте его в exiftool.exe, чтобы отключить режим "паузы", который предназначен для пользователей, запускающих программу двойным щелчком мыши. Когда вы запускаете программу из скрипта, PowerShell ожидает, что она выполнит свою задачу, вернет результат (текст, данные) и завершится. Режим с паузой (-k) нарушает этот процесс

Хранение: У вас есть два основных варианта, где хранить exiftool.exe.

  • Вариант 1 (Простой): В той же папке, что и ваш скрипт. Это самый легкий путь. Ваш скрипт PowerShell всегда сможет найти утилиту, так как она лежит рядом. Идеально для портативных скриптов, которые вы переносите с компьютера на компьютер.

  • Вариант 2 (Рекомендуемый для частого использования): В папке из системной переменной PATH. Переменная PATH — это список директорий, где Windows и PowerShell автоматически ищут исполняемые файлы. Вы можете создать папку (например, C:\Tools), положить туда exiftool.exe и добавить C:\Tools в системную переменную PATH. После этого вы сможете вызывать exiftool.exe из любой папки в любой консоли.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

скрипты для добавления в $PATH:
Добавление директории в PATH для ТЕКУЩЕГО ПОЛЬЗОВАТЕЛЯ
Добавление директории в СИСТЕМНЫЙ PATH для ВСЕХ ПОЛЬЗОВАТЕЛЕЙ

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

PowerShell и внешние программы

Чтобы эффективно использовать ExifTool, нужно знать, как PowerShell запускает внешние .exe файлы. Правильный и самый надежный способ запуска внешних программ — это оператор вызова & (амперсанд). PowerShell выдаст ошибку в случае, если путь к программе содержит пробелы. Например, C:\My Tools\exiftool.exe. & (амперсанд)** говорит PowerShell: "Текст, который следует за мной в кавычках, — это путь к исполняемому файлу. Запусти его, а всё, что идет дальше, — это его аргументы".

# Правильный синтаксис
> & "C:\Path With Spaces\program.exe" "аргумент 1" "аргумент 2"

Всегда используйте &, когда работаете с путями к программам в переменных или путями, которые могут содержать пробелы.

ExifTool + PowerShell

Теперь объединим наши знания.

Пример №1: Базовое извлечение и интерактивный просмотр

Самый простой способ получить все данные из фото и изучить их — это запросить их в формате JSON и передать в Out-ConsoleGridView (ogv).

Путь к фото
> $photoPath = "E:\photos\1234.png"

1. Запускаем exiftool с ключом -json для структурированного вывода
2. Преобразуем JSON-текст в объект PowerShell
Вызываем exiftool.exe напрямую, без переменной и оператора вызова &.
> $exifObject = exiftool.exe -json $photoPath | ConvertFrom-Json

3. Превращаем "широкий" объект в удобную таблицу "Параметр-Значение"
> $reportData = $exifObject.psobject.Properties | Select-Object Name, Value

4. Выводим результат в интерактивное окно для анализа
> $reportData | Out-ConsoleGridView -Title "Метаданные файла: $($photoPath | Split-Path -Leaf)"

Этот код откроет интерактивное окно, где вы сможете отсортировать данные по имени параметра или значению, а также отфильтровать их, просто начав вводить текст. Это невероятно удобно для быстрого поиска нужной информации.


Пример №2: Создание чистого отчета и отправка на разные "устройства"

Out-ConsoleGridView — это только начало. Вы можете направить обработанные данные куда угодно, используя другие командлеты Out-*.

Предположим, у нас есть данные в переменной $reportData из предыдущего примера.

А) Отправка в CSV-файл для Excel
Создаем директорию Reports:
> New-Item -Path "C:\Reports" -ItemType Directory
Сохраняем CSV
> $reportData | Export-Csv -Path "C:\Reports\photo_exif.csv" -NoTypeInformation -Encoding UTF8

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

В) Отправка в буфер обмена

Хотите быстро вставить данные в письмо или чат? Используйте Out-Clipboard.
> $reportData | Format-Table -AutoSize | Out-String | Out-Clipboard
Теперь вы можете нажать `Ctrl+V` в любом текстовом редакторе и вставить аккуратно отформатированную таблицу.


Пример №3: Получение конкретных данных для использования в скрипте

Часто вам не нужен весь отчет, а лишь одно или два значения. Поскольку $exifObject — это обычный объект PowerShell, вы можете легко обращаться к его свойствам.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №4: Пакетное извлечение метаданных из папки

Иногда нужно проанализировать не одно фото, а целую папку с изображениями.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №5: Рекурсивный поиск по подпапкам

ExifTool умеет сам искать файлы во всех подпапках при использовании ключа -r.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №6: Переименование файлов по дате съемки

Это один из самых популярных сценариев автоматизации — файлы получают имена по дате/времени съемки.

> $exifToolPath = "C:\Tools\exiftool.exe" $photoFolder = "D:\Photos" # Переименуем в формат YYYY-MM-DD_HH-MM-SS.jpg & $exifToolPath -r -d "%Y-%m-%d_%H-%M-%S.%%e" "-FileName<DateTimeOriginal" $photoFolder

💡 ExifTool подставит расширение исходного файла автоматически через %%e.

Пример №7: Извлечение только GPS-координат

Полезно, если вы хотите построить карту по вашим фото.

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №8: Массовое удаление всех GPS-данных (для приватности)

# Удалим все GPS-теги из JPG и PNG
> & $exifToolPath -r -overwrite_original -gps:all= "D:\Photos"

💡 Это действие необратимо, поэтому делайте бэкап перед выполнением.


Пример №9: Конвертация времени съемки в местное время

Иногда фото сняты в другом часовом поясе. ExifTool может сместить дату.

# Смещаем время на +3 часа
> & $exifToolPath "-AllDates+=3:0:0" "D:\Photos\IMG_*.JPG"


Пример №13: Копирование метаданных с одного файла на другой

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример №14: Сохранение исходных метаданных в отдельный JSON перед изменением

> $backupPath = "C:\Reports\metadata_backup.json" & $exifToolPath -r -json "D:\Photos" | Out-File -Encoding UTF8 $backupPath


Пример №15: Использование PowerShell для автоматической сортировки фото по дате

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView) Powershell, Инструкция, Админ, Системное администрирование, Обработка фотографий, Автоматизация, Скрипт, IT, Программирование, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Пример 16: Поиск всех уникальных моделей камер в коллекции

Хотя это можно сделать одной строкой, вывод в GridView позволяет сразу скопировать нужное название модели.

Ключ -s3 выводит только значения, -Model - название тега
> $uniqueModels = & exiftool.exe -r -Model -s3 "D:\Photos" | Sort-Object -Unique
Выводим в GridView для удобного просмотра и копирования
> $uniqueModels | Out-ConsoleGridView -Title "Уникальные модели камер в коллекции"

Статья на github

Еще по теме Out-ConsoleGridView:

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView
Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView

Вся Серия постов о PowerShell

Полезно? Подпишись.
Понравилось — ставь «+»
Задавай вопросы в комментариях 👇👇👇
Удачи! 🚀

Показать полностью 9 4
[моё] Powershell Инструкция Админ Системное администрирование Обработка фотографий Автоматизация Скрипт IT Программирование Гайд Видео Без звука Короткие видео Длиннопост
3
23
hypo69
hypo69
25 дней назад
Лига Сисадминов
Серия Философия PowerShell

Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView⁠⁠

В предыдущей части мы познакомились с Out-ConsoleGridView — мощным инструментом для интерактивной работы с данными прямо в терминале. Если вы не знаете, что такое Out-ConsoleGridView, рекомендую начать отсюда 👉 Интерактивная работа: Out-ConsoleGridView

Я не буду повторять теорию, а сразу перейду к практике и покажу 10 сценариев, в которых этот командлет может сэкономить системному администратору или продвинутому пользователю массу времени.

Дисклеймер. В пикабу нет редактора кода - поэтому такое форматирование и картинки. В конце поста я дам ссылку на github. Почитайте, и если вам интересно смотрите код на гитхабе

Out-ConsoleGridView — это не просто "просмотрщик". Это интерактивный фильтр объектов в середине вашего конвейера.

Предварительные требования:

  • PowerShell 7.2 или новее.

  • Установленный модуль Microsoft.PowerShell.ConsoleGuiTools. Если вы его еще не установили:

    > Install-Module Microsoft.PowerShell.ConsoleGuiTools -Scope CurrentUser


Пример 1: Интерактивная остановка процессов


> # Выбираем процессы в интерактивном режиме
> $procsToStop = Get-Process | Sort-Object -Property CPU -Descending | Out-ConsoleGridView -OutputMode Multiple

> # Если что-то было выбрано, передаем объекты на остановку
> if ($procsToStop) {
$procsToStop | Stop-Process -WhatIf
}

  • Get-Process получает все запущенные процессы.

  • Sort-Object упорядочивает их по загрузке CPU, чтобы самые "прожорливые" были наверху.

  • Out-ConsoleGridView отображает таблицу. Вы можете ввести chrome или notepad, чтобы мгновенно отфильтровать список, и выбрать нужные процессы клавишей Space.

  • После нажатия Enter выбранные объекты процессов попадают в переменную $procsToStop и передаются в Stop-Process.


Пример 2: Управление службами Windows

Нужно быстро перезапустить несколько служб, связанных с одним приложением (например, SQL Server).

> $services = Get-Service | Out-ConsoleGridView -OutputMode Multiple -Title "Выберите службы для перезапуска" if ($services) { $services | Restart-Service -WhatIf }

  1. Вы получаете список всех служб.

  2. Внутри Out-ConsoleGridView вы вводите в фильтр sql и сразу видите все службы, относящиеся к SQL Server.

  3. Выбираете нужные и нажимаете Enter. Объекты выбранных служб передаются на перезапуск.

Пример 3: Очистка папки "Загрузки" от больших файлов

Со временем папка "Загрузки" забивается ненужными файлами. Найдем и удалим самые большие из них.

Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView Powershell, Microsoft, Автоматизация, Системное администрирование, IT, Windows, Гайд, Видео, Без звука, Короткие видео, Длиннопост
  1. Мы получаем все файлы, сортируем их по размеру и с помощью Select-Object создаем удобную колонку SizeMB.

  2. В Out-ConsoleGridView вы видите отсортированный список, где легко выбрать старые и большие .iso или .zip файлы.

  3. После выбора их полные пути передаются в Remove-Item.


Пример 4: Добавление пользователей в группу Active Directory

Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView Powershell, Microsoft, Автоматизация, Системное администрирование, IT, Windows, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Вместо того чтобы вручную вводить имена пользователей, вы получаете удобный список, где можете быстро найти и выбрать нужных сотрудников по фамилии или логину.


Пример 5: Узнать, какие программы используют интернет прямо сейчас

Одна из частых задач: "Какая программа тормозит интернет?" или "Кто и куда отправляет данные?". С помощью Out-ConsoleGridView можно получить наглядный ответ.

> # Получаем все активные TCP-подключения
> $connections = Get-NetTCPConnection -State Established | Select-Object RemoteAddress, RemotePort, OwningProcess, @{Name="ProcessName"; Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName}}

> # Выводим в интерактивную таблицу для анализа
> $connections | Out-ConsoleGridView -Title "Активные интернет-подключения"

  1. Get-NetTCPConnection -State Established собирает все установленные сетевые подключения.

  2. С помощью Select-Object мы формируем удобный отчет: добавляем имя процесса (ProcessName) к его ID (OwningProcess), чтобы было понятно, какая программа установила соединение.

  3. Out-ConsoleGridView показывает вам живую картину сетевой активности.



Пример 6: Анализ установки ПО и обновлений

Мы будем искать события от источника "MsiInstaller". Он отвечает за установку, обновление и удаление большинства программ (в формате .msi), а также за многие компоненты обновлений Windows.

Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView Powershell, Microsoft, Автоматизация, Системное администрирование, IT, Windows, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Внутри таблицы: Вы можете отфильтровать список по названию программы (например, Edge или Office), чтобы увидеть всю историю ее обновлений. Вы можете отсортировать по Id, чтобы найти неудачные установки (11708).

Внутри таблицы:

  • Вы можете отфильтровать список по названию программы (например, Edge или Office), чтобы увидеть всю историю ее обновлений.

  • Вы можете отсортировать по Id, чтобы найти неудачные установки (11708).


Пример 7: Интерактивное удаление программ

Вы получаете список всего установленного ПО. В интерфейсе вы можете легко найти и выбрать несколько программ для удаления.


Пример 8: Связывание (Chaining) Out-ConsoleGridView

Это самый мощный прием. Выход одной интерактивной сессии становится входом для другой. Задача: Выбрать одну из ваших папок с проектами, а затем выбрать из нее определенные файлы для создания ZIP-архива.

Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView Powershell, Microsoft, Автоматизация, Системное администрирование, IT, Windows, Гайд, Видео, Без звука, Короткие видео, Длиннопост
  1. Первый Out-ConsoleGridView показывает вам список папок внутри ваших "Документов". Вы можете быстро найти нужную, введя часть ее имени, и выбрать одну папку.

  2. Если папка была выбрана, скрипт немедленно открывает второй Out-ConsoleGridView, который показывает уже файлы внутри этой папки.

  3. Вы выбираете один или несколько файлов клавишей Space и нажимаете Enter.

  4. Скрипт берет выбранные файлы и создает из них ZIP-архив на вашем рабочем столе.

Это превращает сложную многошаговую задачу (найти папку, найти в ней файлы, скопировать их пути, запустить команду архивации) в интуитивно понятный интерактивный процесс из двух шагов.


Пример 9: Управление опциональными компонентами Windows

Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView Powershell, Microsoft, Автоматизация, Системное администрирование, IT, Windows, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Вы можете легко найти и отключить ненужные компоненты, например Telnet-Client или Windows-Sandbox.

Пример 10: Управление виртуальными машинами Hyper-V

Быстро остановить несколько виртуальных машин для обслуживания хоста.

Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView Powershell, Microsoft, Автоматизация, Системное администрирование, IT, Windows, Гайд, Видео, Без звука, Короткие видео, Длиннопост

Статья на github

Clear-DownloadsFolder.ps1

Полезно? Подпишись.
Понравилось — ставь «+»
Задавай вопросы в комментариях 👇👇👇
Удачи! 🚀

Серия постов о PowerShell

Показать полностью 6 7
[моё] Powershell Microsoft Автоматизация Системное администрирование IT Windows Гайд Видео Без звука Короткие видео Длиннопост
0
307
0sennijLis
0sennijLis
26 дней назад
Лига Сисадминов

Как под капотом работает команда cat⁠⁠

Как под капотом работает команда cat
IT Linux IT юмор Системное администрирование Системный Блок Картинка с текстом Кот
19
11
hypo69
hypo69
27 дней назад
Лига Сисадминов
Серия Философия PowerShell

Microsoft окончательно прощается с PowerShell 2.0 в Windows⁠⁠

Корпорация Microsoft объявила о полном удалении устаревшего компонента Windows PowerShell 2.0 из операционных систем Windows 11 и Windows Server 2025, начиная с августа 2025 года. Этот шаг является частью глобальной стратегии по повышению безопасности, упрощению экосистемы PowerShell и избавлению от устаревшего кода.

Windows PowerShell 2.0, впервые представленный в Windows 7, был официально признан устаревшим еще в 2017 году, однако оставался доступным в качестве дополнительного компонента для обеспечения обратной совместимости. Теперь Microsoft делает решительный шаг, полностью исключая его из будущих релизов.

Хронология изменений

Процесс удаления будет проходить поэтапно:

  • Июль 2025 года: PowerShell 2.0 уже удален из предварительных сборок Windows Insider.

  • Август 2025 года: Компонент будет удален из Windows 11, версия 24H2.

  • Сентябрь 2025 года: PowerShell 2.0 будет исключен из Windows Server 2025.

Все последующие выпуски этих операционных систем будут поставляться без PowerShell 2.0.

Почему PowerShell 2.0 уходит в прошлое?

Основная причина удаления — соображения безопасности. В PowerShell 2.0 отсутствуют ключевые функции защиты, появившиеся в более поздних версиях, такие как:

  • Интеграция с интерфейсом для проверки на вредоносное ПО (AMSI).

  • Расширенное логирование блоков скриптов.

  • Режим ограниченного языка (Constrained Language Mode).

Эти упущения делали PowerShell 2.0 привлекательной целью для злоумышленников, которые могли использовать его для обхода современных систем защиты. Кроме того, удаление устаревшего компонента позволит Microsoft сократить сложность кодовой базы и упростить поддержку экосистемы PowerShell.

Что это значит для пользователей и администраторов?

Для большинства пользователей это изменение пройдет незамеченным, поскольку современные версии PowerShell, такие как PowerShell 5.1 и PowerShell 7.x, остаются доступными и полностью поддерживаются. Однако организациям и разработчикам, использующим устаревшие скрипты или программное обеспечение, которые явно зависят от PowerShell 2.0, необходимо принять меры.

Рекомендации по переходу

Microsoft настоятельно рекомендует:

  • Мигрировать скрипты и инструменты на более новые версии PowerShell. PowerShell 5.1 обеспечивает высокую обратную совместимость практически со всеми командами и модулями. PowerShell 7.x предлагает кроссплатформенность и множество современных функций.

  • Обновить или заменить устаревшее программное обеспечение. Если старое приложение или установщик требуют PowerShell 2.0, необходимо найти более новую версию продукта. Это касается и некоторых серверных продуктов Microsoft (Exchange, SharePoint, SQL), для которых существуют обновленные версии, работающие с современным PowerShell.

Затронутые версии Windows

Удаление PowerShell 2.0 коснется следующих версий операционных систем:

  • Windows 11 (Home, Pro, Enterprise, Education, SE, Multi-Session, IoT Enterprise) версия 24H2.

  • Windows Server 2025.

Более ранние версии Windows 11, такие как 23H2, по-видимому, сохранят PowerShell 2.0 в качестве опционального компонента.

Этот шаг Microsoft знаменует собой конец целой эпохи в администрировании Windows, подчеркивая приверженность компании к более безопасной и современной вычислительной среде.

Релизы PS 7


Мой цикл статей о технологии PowerShell:
Философия PowerShell.

Показать полностью
Powershell Microsoft Системное администрирование Новости
1
2
rivlok
1 месяц назад

Замена дисков на большие в RAID-1 на AVAGO 9361-8I⁠⁠

Здравствуйте! Нужна помощь в решении проблемы, RAID изначально был на двух 2TB дисках, теперь оба диска 4 TB. Так как "умер" один 2TB, а под рукой был только 4TB, установлен был он. Теперь установлен и второй 4TB, а массив понятно остался 2TB, можно как то расширить до максимума не теряя инфу? Установлена AVAGO утилита с вэб-мордой. Спасибо за помощь!

Системное администрирование Windows Текст
6
6
DmitryRomanoff
DmitryRomanoff
1 месяц назад
IT-юмор

Очередная подборка задач от нашей IT поддержки⁠⁠

- Нужно настроить интернет, чтобы не показывал плохие новости
- Помогите вставить роутер в розетку, только у меня нет роутера
- Установите иксель в 1С. Срочно!

[моё] Юмор IT Моральная поддержка Программист Системное администрирование Администратор Короткопост Текст
8
17
hypo69
hypo69
1 месяц назад
Лига Сисадминов
Серия Философия PowerShell

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView⁠⁠

  • В первой части мы определили два ключевых понятия powershell: конвейер и объект.

  • Во второй части я рассказал как объекты взаимодействуют через переменные и конвейер.

  • В третьей части познакомились с файловой системой и провайдерами.

  • Сегодня рассмотрим интерактивную работу с данными в консоли.

Дисклеймер. На пикабу нет редактора кода, поэтому картинки и кривое форматирование. В конце поста я размещу ссылки на статью и исходники в github. Приятного чтения.

Out-ConsoleGridView. GUI в консоли PowerShell.

❗ Важно: Все описываемые ниже инструменты требуют PowerShell 7.2 или новее.

Out-ConsoleGridView — это интерактивная таблица, прямо в консоли PowerShell, позволяющая:

  • просматривать данные в виде таблицы;

  • фильтровать и сортировать колонки;

  • выбирать строки курсором — для передачи их дальше по конвейеру.

  • и многое другое.

Out-ConsoleGridView является частью модуля Microsoft.PowerShell.ConsoleGuiTools. Для его использования сначала нужно установить этот модуль.

Для установки модуля выполните следующую команду в PowerShell:

Install-Module Microsoft.PowerShell.ConsoleGuiTools -Scope CurrentUser

Install-Module загружает и устанавливает указанный модуль из репозитория в систему. Аналоги: pip install в Python и npm install в Node.js.

📎 Ключевые параметры Install-Module


Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView Powershell, Системное администрирование, Автоматизация, Инструкция, IT, Windows, Админ, Гайд, Консоли, Видео, Без звука, Короткие видео, Длиннопост

Ключевые параметры Install-Module

После установки вы можете передавать любой вывод в Out-ConsoleGridView для интерактивной работы.

# Классческий пример: вывод списка процессов в интерактивную таблицу:
> Get-Process | Out-ConsoleGridView

Интерфейс:

  • Фильтрация: Просто начните вводить текст, и список будет отфильтрован на лету.

  • Навигация: Используйте клавиши-стрелки для перемещения по списку.

  • Выбор: Нажмите Space для выбора/снятия выделения с одного элемента.

  • Множественный выбор: Ctrl+A для выбора всех элементов, Ctrl+D для снятия всего выделения.

  • Подтверждение: Нажмите Enter, чтобы вернуть выбранные объекты.

  • Отмена: Нажмите ESC, чтобы закрыть окно без возврата данных.

Что умеет Out-ConsoleGridView:

  • Отображать табличные данные прямо в консоли в виде интерактивной таблицы с навигацией по строкам и столбцам.

  • Сортировать столбцы по нажатию клавиш.

  • Фильтровать данные с помощью поиска.

  • Выбирать одну или несколько строк с возвратом результата.

  • Работать в чистой консоли без GUI-окон.

  • Поддерживать большое количество строк с прокруткой.

  • Поддерживать различные типы данных (строки, числа, даты и пр.).


Примеры использования Out-ConsoleGridView

Базовое использование — показать таблицу с возможностью интерактивного выбора. (checkbox)

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView Powershell, Системное администрирование, Автоматизация, Инструкция, IT, Windows, Админ, Гайд, Консоли, Видео, Без звука, Короткие видео, Длиннопост

Select process(es)

Выводится список процессов в интерактивной консольной таблице. Можно фильтровать по имени, сортировать столбцы и выбирать процессы. Выбранные процессы возвращаются в переменную $selected.


Выбор одной строки с обязательным возвратом результата. (radio)

$choice = Get-Service | Select-Object -First 20 | Out-ConsoleGridView -Title "Select a service" -OutputMode Single Write-Host "You selected service: $($choice.Name)"

Пользователь выбирает одну строку. -OutputMode Single запрещает выбирать несколько.


Интерактивное управление процессами:

Вы можете выбрать несколько процессов для остановки. Параметр -OutputMode Multiple указывает, что мы хотим вернуть все выбранные элементы.

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView Powershell, Системное администрирование, Автоматизация, Инструкция, IT, Windows, Админ, Гайд, Консоли, Видео, Без звука, Короткие видео, Длиннопост

Интерактивное управление процессами

Выбор файлов для архивации:

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView Powershell, Системное администрирование, Автоматизация, Инструкция, IT, Windows, Админ, Гайд, Консоли, Видео, Без звука, Короткие видео, Длиннопост

Выбор файлов для архивации

Выбор одного элемента для детального анализа:

Паттерн "Drill-Down" — от общего списка к деталям с Out-ConsoleGridView

Часто при работе с системными объектами мы сталкиваемся с дилеммой:

  1. Если запросить все свойства для всех объектов (Get-NetAdapter | Format-List *), вывод будет огромным и нечитаемым.

  2. Если показать краткую таблицу, мы потеряем важные детали.

  3. Иногда попытка получить все данные сразу может привести к ошибке, если один из объектов содержит некорректные значения.

Решение этой проблемы — паттерн "Drill-Down" (детализация). Его суть проста:

  • Шаг 1 (Обзор): Показать чистый, краткий и безопасный список элементов для выбора.

  • Шаг 2 (Детализация): После того как пользователь выбрал один конкретный элемент, показать ему всю доступную информацию именно по этому элементу.

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

Задача: Сначала показать краткий список сетевых адаптеров. После выбора одного из них, открыть второе окно со всеми его свойствами.

Готовый код:

Философия PowerShell. Часть 4. Интерактивная работа: Out-ConsoleGridView Powershell, Системное администрирование, Автоматизация, Инструкция, IT, Windows, Админ, Гайд, Консоли, Видео, Без звука, Короткие видео, Длиннопост

Создание обозревателя сетевых адаптеров


Информация о системе.

код скрипта для получения информации о системе: Get-SystemMonitor.ps1

Создание командлета 'Get-SystemMonitor'

Шаг 1: Настройка переменной PATH

  1. Создайте постоянную папку для ваших инструментов, если еще не сделали этого. Например: C:\PowerShell\Scripts

  2. Поместите ваш файл Get-SystemMonitor.ps1 в эту папку.

  3. Добавьте эту папку в системную переменную PATH,

Шаг 2: Настройка псевдонима (alias) в профиле PowerShell

  1. Откройте ваш файл профиля PowerShell:

    notepad $PROFILE

  2. Добавьте в него следующую строку:

    Set-Alias -Name sysmon -Value "Get-SystemMonitor.ps1"
    где sysmon - псевдоним командлета Get-SystemMonitor

    Если вы когда-нибудь переместите папку C:\PowerShell\Scripts, вам нужно будет обновить только переменную PATH, а ваш файл профиля останется без изменений.

Перезапустите PowerShell

Закройте все открытые окна PowerShell и откройте новое. Это необходимо, чтобы система применила изменения как в переменной PATH, так и в вашем профиле.

Код скрипта для установки C:\PowerShell\Scripts в PATH: Add-Path.ps1

Запуск:
Get-SystemMonitor
или конкретный ресурс:
Get-SystemMonitor -Resource users
Реализованы cpu, memory, system, network, users, peripherals

🤝 Поздравляю. Вы создали первый командлет.

Пост на github

Полезно? Подпишись.
Понравилось — ставь «+»
Задавайте вопросы в комментариях 👇👇👇
Удачи! 🚀

Серия постов о PowerShell

UPD:

Практические примеры использования:
Серия «Философия PowerShell». Практические примеры использования Out-ConsoleGridView

Серия «Философия PowerShell». Полное руководство по ExifTool и PowerShell (Out-ConsoleGridView)

А давайте встроим ии в powershell

Показать полностью 5 7
[моё] Powershell Системное администрирование Автоматизация Инструкция IT Windows Админ Гайд Консоли Видео Без звука Короткие видео Длиннопост
0
39
hypo69
hypo69
1 месяц назад
Лига Сисадминов
Серия Философия PowerShell

Управление питанием сетевого адаптера Wake-on-LAN с PowerShell⁠⁠

@RaiJu, пост для вас.

Подробное руководство по настройке Wake-on-LAN и Magic Packet с помощью PowerShell.

Magic Packet — это специальный сетевой фрейм, посылаемый для пробуждения устройства через Wake-on-LAN. Чтобы WoL работал, сетевой адаптер должен поддерживать Magic Packet и быть настроен на его приём.

Дисклеймер. На пикабу нет редактора кода, поэтому картинками и плохим форматирование. В конце статьи вы найдете ссылку на github, где все нормально отображается.

Шаг 1: Идентификация устройства.

> Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object FriendlyName, Status, Class, InstanceId

Управление питанием сетевого адаптера Wake-on-LAN с PowerShell Powershell, Сетевая карта, Системное администрирование, Гайд, IT, Длиннопост

Эта команда говорит системе:

"Покажи мне все устройства, в названии которых есть слово «Realtek», и выведи по ним таблицу с четырьмя колонками: полное имя, статус, класс и системный ID."

  1. Get-PnpDevice: Берет полный список всех Plug-and-Play устройств.

  2. | (Конвейер): Передает список дальше.

  3. Where-Object { ... }: Фильтрует список, оставляя устройства, чье имя (FriendlyName) содержит "Realtek".

  4. | (Конвейер): Передает отфильтрованный список.

  5. Select-Object ...: Форматирует вывод, показывая только нужные свойства.

Запоминаем устройство в $device

$device = Get-PnpDevice | Where-Object { $_.FriendlyName -like "*Realtek*" } | Select-Object FriendlyName, Status, Class, InstanceId

Записываем его свойства в переменные
> $DeviceName = $device.FriendlyName
> $InstanceId = $device.InstanceId
> $pmKey = "HKLM:\SYSTEM\CurrentControlSet\Enum\$InstanceId\Device Parameters"

Шаг 2: Глобальное разрешение на пробуждение

Команда powercfg дает устройству "официальное" разрешение от Windows на пробуждение системы.
> powercfg -deviceenablewake $DeviceName

Эта команда эквивалентна установке флажка "Разрешить этому устройству выводить компьютер из ждущего режима".

Отключение:
> powercfg -devicedisablewake $DeviceName

Шаг 3: Настройка драйвера.

Настройки WOL находятся в параметрах самого драйвера, которые хранятся в реестре. Чтобы установить флажок "Только разрешать магическому пакету выводить компьютер из ждущего режима", используем команду Set-ItemProperty.

> Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 1

Обратное действие — отключение WOL (Value 0):

> Set-ItemProperty -Path $pmKey -Name "*WakeOnMagicPacket" -Value 0

Здесь возникает проблема. Имя этого параметра может отличаться у разных производителей. Например, для Intel это *WakeOnMagicPacket, а для Realtek — WakeOnMagicPacket (без *). Если настройка не применяется, проверьте правильное имя командой Get-ItemProperty -Path $pmKey и используйте его.

Шаг 4: Завершающая настройка через CIM

Для полной уверенности в том, что настройки управления питанием применены корректно, используем современный стандарт CIM (Common Information Model).

Находим CIM-объект, связанный с нашим устройством.
> $adapterCim = Get-CimInstance -Namespace root\wmi -ClassName MSPower_DeviceEnable | Where-Object { $_.InstanceName -like "*$($instanceId.Split('\')[-1])*" }

Применяем к нему изменения.
> if ($adapterCim) { Set-CimInstance -CimInstance $adapterCim -Property @{ Enable = $true } }

Управление питанием сетевого адаптера Wake-on-LAN с PowerShell Powershell, Сетевая карта, Системное администрирование, Гайд, IT, Длиннопост

Весь процесс

Готовый скрипт можно скачать отсюда.
Статья здесь

Полезно? Подпишись.
Понравилось — ставь «+»
Удачи! 🚀

Другие статьи о PowerShell

Философия PowerShell. Части 0,1 Вступление и первый командлет

Часть 2: Конвейер (Pipeline), переменные, Get-Member, файл .ps1 и экспорт результатов

Часть 3: Навигация и управление файловой системой. Знакомство с операторами логики и функциями

Диагностика и восстановление дисков с помощью PowerShell

Показать полностью 1
[моё] Powershell Сетевая карта Системное администрирование Гайд IT Длиннопост
16
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии