Power shell и selenium проще чем кажется

Давайте начнем изучать уроки Powershell. Сначала мы научимся:

Windows PowerShell — это объектно-ориентированный механизм автоматизации и язык сценариев. Он предназначен в основном для ИТ-специалистов и системных администраторов для контроля и автоматизации администрирования. Windows ОС и другие приложения. Он обеспечивает новые убедительные concepts расширить знания, которые вы получили, и сценарии, которые вы создали в рамках Windows Командная строка и Windows Среды хоста сценариев.

Он сочетает в себе гибкость сценариев, скорость работы с командной строкой и мощь инструмента администрирования на основе графического пользовательского интерфейса. Это позволяет вам эффективно решать проблемы, помогая системному администратору исключить будущий ручной труд. hours. Мы рассмотрим все важные аспекты, которые вам следует знать, чтобы изучить PowerShell.

Зачем использовать Powershell?

Вот некоторые важные причины использования Powershell:

  • Powershell предлагает хорошо интегрированный интерфейс командной строки для operaсистема
  • PowerShell обеспечивает полный доступ ко всем типам в .NET Framework.
  • Доверено системным администраторам.
  • PowerShell — это простой способ манипулировать компонентами сервера и рабочей станции.
  • Он ориентирован на системных администраторов благодаря более простому синтаксису.
  • PowerShell более безопасен, чем работа VBScript или другие языки сценариев

История PowerShell

Первая версия PowerShell 1.0 была выпущена в 2006 году. Сегодня PowerShell имеет версию 7.2. С течением года и версии возможности PowerShell и среды хостинга значительно выросли.

Давайте посмотрим версию wise История Powershell:

  • PowerShell версии 1 поддерживал локальное администрирование Windows сервер 2003
  • PowerShell 2.0 был интегрирован с Windows 7 и Windows Сервер 2008Р2. Эта версия поддерживает удаленное взаимодействие и расширяет возможности PowerShell, такие как транзакции, фоновые задания, события, отладка и т. д.
  • PowerShell 3.0 был выпущен как внутренняя часть Windows рамки управления. Он был установлен на Windows 8 и Windows Server 2012. Вы можете добавлять и планировать задания, подключение сеансов, автоматическую загрузку модулей и т. д.
  • PowerShell 4.0 поставлялся с Windows 8.1 и Windows Сервер 2012Р2. В этой версии добавлена ​​поддержка конфигурации желаемого состояния, расширенная отладка, диагностика сети.
  • PowerShell 5.0 был выпущен как внутренняя часть Windows платформа управления 5. В этой версии предлагаются такие функции, как удаленная отладка, определения классов, перечисления .NET и т. д.
  • Выпущена PowerShell 7.2. Он построен на .NET 6.0. Эта версия предлагает новые operaТоры, упрощенный и динамический просмотр ошибок, автоматические уведомления о новых версиях и т. д.

Далее в этом руководстве по написанию сценариев Powershell мы узнаем о функциях Powershell.

Особенности PowerShell

  • Удаленное взаимодействие PowerShell: PowerShell позволяет запускать сценарии и командлеты на удаленном компьютере.
  • Фоновые задания: Это поможет вам вызвать скрипт или конвейерsyncхронически. Вы можете запускать свои задания либо на локальном компьютере, либо на нескольких удаленно. operaтед машины.
  • Сделки: Включить командлет и позволить разработчикам выполнять
  • Вечер: Эта команда помогает вам прослушивать, пересылать и реагировать на события управления и системы.
  • Передача файлов по сети: Powershell предлагает встроенную поддержку приоритетных задач.syncхроническая, регулируемая передача файлов между компьютерами с использованием технологии фоновой интеллектуальной службы передачи (BITS).

Как запустить PowerShell

Теперь в этом руководстве по сценариям Powershell мы узнаем, как запустить Powershell на Windows OS.

PowerShell предустановлен во всех последних версиях Windows. Нам нужно запустить PowerShell, для этого нам нужно выполнить следующие шаги:

Шаг 1) Найдите PowerShell в Windows. Выберите и нажмите

Запустить PowerShell

Шаг 2) Откроется окно Power Shell

Запустить PowerShell

Командлет PowerShell

Командлет, который также называется Command let, — это облегченная команда, используемая в базовой среде PowerShell Windows. PowerShell вызывает эти командлеты в командной строке. Вы можете создавать и вызывать команды командлетов с помощью PowerShell APIS.

Командлет против команды

Командлеты отличаются от команд в других средах командной оболочки, описанных ниже.wing манеры?

  • Командлеты . NET Framework объекты класса. Его нельзя выполнить отдельно.
  • Командлеты могут состоять всего из дюжины строк кода.
  • Синтаксический анализ, форматирование вывода и представление ошибок не обрабатываются командлетами.
  • Процесс командлетов работает с объектами. Таким образом, текстовый поток и объекты не могут быть переданы в качестве вывода для конвейерной обработки.
  • Командлеты основаны на записях, поэтому они обрабатывают один объект за раз.

Большая часть функций PowerShell исходит из командлета, который всегда имеет формат глагол-существительное, а не множественное число. Более того, командлет возвращает объекты, а не текст. Командлет — это серия команд, состоящая из нескольких строк, хранящихся в текстовом файле с расширением .ps1.

Командлет всегда состоит из глагола и существительного, разделенных дефисом. Некоторые из глаголов, которые помогут вам изучить PowerShell:

  • Получить — Чтобы получить что-то
  • Начало — Чтобы запустить что-то
  • Вне — Выводить что-либо
  • Stop — Остановить то, что работает
  • Поставьте — Определить что-либо
  • Новый — Создать что-то

Фоллоwing представляет собой список важных команд PowerShell:

Получить помощь: Справка по командам и темам PowerShell

Пример. Отображение справочной информации о команде Format-Table.

Get-Help Format-Table

Командлет против команды

Команда Get: Получить информацию обо всем, что можно вызвать

Пример сценария Powershell: создание списка командлетов и функций, установленных на вашем компьютере.

Get-Command

Командлет против команды

Получить-Сервис: Находит все командлеты со словом «сервис».

Пример: получить все службы, начинающиеся с «vm».

Get-Service "vm*"

Командлет против команды

Получить члена: Покажите, что можно сделать с объектом

Пример: получение участников процессов виртуальной машины.

Get-Service "vm*" | Get-Member

Командлет против команды

  • Получить модуль. Показывает пакеты команд.
  • Получить содержимое. Этот командлет может взять файл, обработать его содержимое и что-то с ним сделать.
  • Get- get Находит все командлеты, начинающиеся со слова get-.

Пример: создать папку

New-Item -Path 'X:\Guru99' -ItemType Directory

Командлет против команды

Типы данных Powershell

Типы данных Powershell
Типы данных Powershell

Специальные переменные

Специальная переменнаяОписание
$ОшибкаМассив объектов ошибок, отображающих самые последние ошибки.
$ХостОтобразить имя текущего хост-приложения
$ПрофильСохраняет весь путь к профилю пользователя для оболочки по умолчанию.
$ PIDСохраняет идентификатор процесса
$PSUICultureОн содержит название текущей культуры пользовательского интерфейса.
$НУЛЬСодержит пустое значение или значение NULL.
$FalseСодержит значение ЛОЖЬ
$ИстинаСодержит значение ИСТИНА

Скрипты PowerShell

Скрипты Powershell хранятся в файле .ps1. По умолчанию вы не можете запустить скрипт, просто double- клик по файлу. Это защитит вашу систему от случайного повреждения. Чтобы выполнить скрипт:

Шаг 1: щелкните его правой кнопкой мыши и выберите «Запустить с помощью PowerShell».

Скрипты PowerShell

Более того, существует политика, ограничивающая выполнение скриптов. Эту политику можно просмотреть, выполнив команду Get-ExecutionPolicy.

Вы получите один из следующихwing вывод:

  • ограниченный— Никакие сценарии не допускаются. Это настройка по умолчанию, поэтому она будет отображаться при первом запуске команды.
  • AllSigned— Вы можете запускать скрипты, подписанные проверенным разработчиком. С помощью этой настройки скрипт будет запрашивать подтверждение того, что вы хотите его запустить, перед выполнением.
  • RemoteSigned— Вы можете запускать свои или скрипты, подписанные проверенным разработчиком.
  • Неограниченный— Вы можете запустить любой скрипт, который захотите

Действия по изменению политики выполнения

Шаг 1) Откройте приглашение PowerShell с повышенными правами. Щелкните правой кнопкой мыши PowerShell и выберите «Запуск от имени администратора».

Скрипты PowerShell

Шаг 2) Войдите в Фолоwing команды

  1. Get-ExecutionPolicy
  2. Политика Set-executionpolicy неограничена
  3. Введите Y в командной строке
  4. Get-ExecutionPolicy

Скрипты PowerShell

Первый скрипт PowerShell

В блокноте напишите следующееwing команду

Write-Host "Hello, Guru99!"

Скрипты PowerShell имеют расширение ps1. Сохраните файл как FirstScript.ps1.

Первый скрипт PowerShell

В Powershell вызовите скрипт с помощью команды

& "X:\FirstScript.ps1"

Первый скрипт PowerShell

Что такое PowerShell ISE?

Команда
Windows Интегрированная среда сценариев PowerShell (ISE) — это редактор по умолчанию для Windows PowerShell. В этой ISE вы можете запускать команды, тестировать запись и отлаживать сценарии в среде графического пользовательского интерфейса на основе окна. Вы можете выполнять многострочное редактирование, раскрашивание синтаксиса, завершение табуляции, выборочное выполнение и многое другое.

:/>  Не перечислять файлы и папки в azure file share

Windows PowerShell ISE также позволяет запускать команды на панели консоли. Однако он также поддерживает панели, которые можно использовать для одновременной работы.neoОбычно просматривайте исходный код вашего сценария и других инструментов, которые вы можете подключить к ISE.

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

PowerShell интегрированная среда сценариев сценариев
PowerShell интегрированная среда сценариев сценариев

Тот же скрипт, который мы создали в блокноте, можно создать в ISE.

  1. Вставьте код в редактор
  2. Сохранить сценарий
  3. Используйте F5 для запуска скрипта
  4. Наблюдайте за выводом в консоли

PowerShell интегрированная среда сценариев сценариев

Фоллоwing код даст бесплатный Виртуальная память в твоей машине

Get-WmiObject -Class Win32_OperatingSystem –ComputerName localhost |
Select-Object -Property CSName,FreeVirtualMemory 

PowerShell интегрированная среда сценариев сценариев

PowerShell Concepts

Теперь в этом уроке Powershell для начинающих мы узнаем о важных Powershell. concepts:

КомандлетыКомандлет — это команда сборки, написанная на языках .net, таких как VB или C#. Это позволяет разработчикам расширять набор командлетов, загружая и записывая оснастки PowerShell.
функцииФункции — это команды, написанные на языке PowerShell. Его можно разработать без использования других IDE, таких как Visual Studio и разработчики.
Заметки к слайдамСкрипты представляют собой текстовые файлы на диске с расширением .ps1.
ПриложенияПриложения существуют windows программ.
Что еслиПриказывает командлету не выполняться, а сообщает вам, что произойдет, если командлет запустится.
подтвердитьУкажите командлету, что перед выполнением команды будет выдаваться запрос.
ПодробныйОбеспечивает более высокий уровень детализации.
ОтлаживатьУказывает командлету предоставить отладочную информацию.
ОшибкаДействиеУказывает командлету выполнить определенное действие при возникновении ошибки. Разрешенные действия продолжать, стоп, молча-продолжать и спрашивать.
ОшибкаПеременнаяОн указывает переменную, содержащую информацию об ошибке.
OutVariableСообщает командлету использовать определенную переменную для хранения выходной информации.
ВнеBufferУказывает командлету хранить определенное количество объектов перед вызовом следующего командлета в конвейере.

Преимущества использования скрипта PowerShell

  • Скрипты PowerShell действительно мощны и могут сделать многое за меньшее количество строк.
  • Переменные объявляются в виде $
  • Переменные можно использовать для хранения вывода команды, объектов и значений.
  • «Тип» переменной указывать не нужно.

PowerShell против. Командная строка

PowerShellКомандная строка
PowerShell глубоко интегрируется с Windows ОПЕРАЦИОННЫЕ СИСТЕМЫ. Он предлагает интерактивный интерфейс командной строки и язык сценариев.Командная строка — это интерфейс командной строки по умолчанию, предоставляемый Microsoft. Это простое Win32-приложение, которое может взаимодействовать и общаться с любыми Win32-объектами в Windows operaсистема тинг.
PowerShell использует так называемые командлеты. Его можно вызвать либо в среде выполнения, либо в сценариях автоматизации.Никакие такие функции не доступны в командной строке.
PowerShell рассматривает их как объекты. Таким образом, выходные данные можно передать в качестве входных данных другим командлетам через конвейер.В командной строке или даже оболочке *nix выходные данные, генерируемые командлетом, представляют собой не просто поток текста, а набор объектов.
PowerShell очень продвинут в плане функций, возможностей и внутреннего функционирования.Командная строка очень проста.

Приложения Powershell

Сегодня PowerShell стал идеальным выбором для ИТ-администраторов, поскольку он упрощает управление. operaция и усилия в крупных корпоративных сетях. Например, предположим, что вы управляете большой сетью, содержащей более четырехсот серверов. Теперь вы хотите внедрить новое решение безопасности. Это решение безопасности зависит от определенной службы, которую необходимо запустить на этих серверах.

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

Итого

  • Windows PowerShell — объектно-ориентированный механизм автоматизации и язык сценариев.
  • Powershell предлагает хорошо интегрированный интерфейс командной строки для operaсистема
  • Первая версия PowerShell 1.0 была выпущена в 2006 году.
  • PowerShell позволяет запускать сценарии и командлеты на удаленном компьютере.
  • PowerShell предустановлен во всех последних версиях Windows
  • Командлет — это упрощенная команда, используемая в базовой среде PowerShell Windows.
  • Get, Start, Out, Stop, Set, New — важные команды PowerShell.
  • Boolean, Byte, Chat, Decimal, Decimal, Long — важные типы данных PowerShell.
  • $Ошибка. $Host, $Profile, $PID, $PSUICulture, $NULL — это специальные переменные, используемые в PowerShell.
  • Команда
    Windows PowerShell Integrated Scripting Environment (ISE) — редактор PowerShell по умолчанию.
  • PowerShell глубоко интегрируется с Windows ОС, тогда как командная строка — это интерфейс командной строки по умолчанию, предоставляемый Microsoft
  • PowerShell стал идеальным выбором для ИТ-администраторов, поскольку он упрощает управление. operaция и усилия в крупных корпоративных сетях

Использование PowerShell для администрирования и автоматизации задач

PowerShell – это командная оболочка и полноценный объектно-ориентированный язык сценариев основанный на .NET, который можно использовать для управления компьютерами и созданий скриптов автоматизации различных задач администрирования. Среда PowerShell предустановлена в Windows.

Команды PowerShell (называются командлеты) можно запускать в командной строке
powershell.exe
(
pwsh.exe
для PowerShell Core 6.7, 7.x), или можно использовать встроенный в Windows редактор сценариев PowerShell ISE (с подсветкой кода, справочником команд, средствами отладки). Еще больше возможностей для работы с кодом PoweShell дает бесплатный редактор Visual Studio Code (VSCode). В консоли PowerShell доступна история выполненных ранее команд.

На данный момент есть две ветки PowerShell:

  • Windows PowerShell до версии 1 — встроенная в Windows классическая версия PowerShell, основанная на .NET Framework. На данный момент PowerShell 5.1 не развивается Microsoft.
  • PowerShell Core x, 7.x — актуальная кроссплатформенная версия PowerShell, основанная на .NET Core. Активно развивается. Эту версию PowerShell нужно устанавливать и обновлять отдельно. Возможна установка на PowerShell Core на Linux.

PowerShell позволяет системным администраторам автоматизировать и управлять различными компонентам дестопных версий Windows, ролями Windows Server, и другими компонентами инфраструктуры Microsoft и сторонними продуктами.

Команды и скрипты PowerShell для системного администратора

PowerShell в администрировании ролей Windows Server

PowerShell – это отличное средство автоматизации настройки и управления платформой Windows Server. Практически все действия, которые вы выполняете с помощью графических оснасток можно сделать с помощью PowerShell. PowerShell значительно упрощает одновременное администрирование десятков и сотен серверов с Windows Server 2022/2019/2016/2012R2.

  • Установка и удаление ролей в Windows Server через PowerShell
  • Файловый сервер: управление общими сетевыми папками с помощью PowerShell
  • Установка, настройка и администрирование роли Remote Desktop Services (RDS): развертывание фермы серверов RDS; настройка шлюза RD Gateway; перенос ролей RDS на другой сервер;
  • Включить поддержку Wi-Fi адаптеров в Windows Server
  • Установка и настройка службы SNMP в Windows
  • Основные команды настройки Windows Server Core из консоли PowerShell
  • Администрирование роли Hyper-V требует наличия установленного PowerShell модуля Hyper-V. Он позволяет: установить Windows в виртуальную машину Hyper-V; настроить автозапуск ВМ; клонирование, экспорт и импорт виртуальных машин в Hyper-V
  • Использование iSCSI дисков в Windows Server
  • Установка и настройка роли DHCP сервера в Windows Server

Администрирование компьютеров Windows 10 и 11 с помощью PowerShell

С помощью PowerShell вы можете конфигурировать различные параметрами в пользовательских операционных системах (Windows 10 и 11):

Использование PowerShell для администрирования Active Directory

Для администрирования леса/домена Active Directory используется модуль RSAT-AD-PowerShell:

Работа с файлами в PowerShell

  • Import-CSV
    ,
    Export-CSV
    – чтение, экспорт данных в CSV файлы из скриптов PowerShell
  • Чтение и запись в Excel файл из PowerShell

Управление Exchange с помощью PowerShell

Командлеты PowerShell это важный инструмент администрирования и автоматизации on-premises Exchange Server и Exchange Online (Microsoft 365). Для подключения к Exchange Online нужно установить модуль EXO. К Exchange Server можно подключиться удаленно с любого компьютера и импортировать командлеты PowerShell для Exchange в свою сессию.

  • Перевод Exchange Server в режим обслуживания, очистка и перемещение логов Exchange
  • Настройка ящиков пользователей: включить/отключить переадресацию почты в ящике Exchange, предоставить права доступа к ящику Exchange или календарю, настроить региональные параметры ящика Exchange; создать/удалить правило в ящике пользователя; поиск и удаление писем в ящиках Exchange; разрешить автоподключение ящиков Exchange в Outlook; включить и настроить автоответ в почтовом ящике
  • Проверить размер почтового ящика, задать квоты в Exchange Server
  • Конвертировать ящик пользователя в общий и наоборот
  • Управление группами рассылок (distribution group)
  • Как удалить или переименовать почтовую базу в Exchange
  • Аудит действий пользователя в ящике Exchange
  • Get-MessageTrackingLog
    анализов журналов доставки писем в Exchange
:/>  Режим гибернации в Windows 10: что это такое, как ее включить или отключить, а также как удалить или уменьшить файл hiberfil sys

Удаленное подключение, получение данных с помощью PowerShell

  • Удаленные подключения PowerShell Remoting через SSH
  • Управление компьютерами в рабочей группе из PowerShell
  • Удаленное подключение PowerShell через HTTPS
  • Командлет
    Enter-PSSession
    – создать интерактивную PowerShell сессию с удаленным компьютером
  • Получить имя пользователя на удаленном компьютере
  • Командлет
    Invoke-Command
    запуск команд и скриптов PowerShell на удаленных компьютерах
  • Проверка открытых/закрытых портов на удаленном хосте с помощью PowerShell
  • Invoke-WebRequest
    получить данные с веб страницы, скачать файл с помощью PowerShell
  • Send-MailMessage
    PowerShell командет для отправки писем по протоколу SMTP

Автоматизация PowerShell в сторонних продуктах

Как узнать общее время работы (uptime) Windows?

Power shell и selenium проще чем кажется

user

Ограничение на количество одновременных сетевых подключений в Windows 10 и 11

Power shell и selenium проще чем кажется


Автоматизация любых действий в браузере с помощью PowerShell и Selenium

Power shell и selenium проще чем кажется


Настройка режима киоска в Windows 11

Power shell и selenium проще чем кажется

Проверка учетных данных пользователя AD из скрипта PowerShell

Power shell и selenium проще чем кажется


Как заблокировать программе доступ в Интернет в Windows?

Power shell и selenium проще чем кажется


Тест скорости Интернета в Windows из CMD/PowerShell

Power shell и selenium проще чем кажется


PowerShell скрипт для проверки совместимости компьютеров с Windows 11

Power shell и selenium проще чем кажется

Включаем аудит доступа к папкам и файлам в Windows

Power shell и selenium проще чем кажется


Добавление хоста ESXi в VMware vCenter

Power shell и selenium проще чем кажется


Копирование (синхронизация) файлов из SharePoint в локальную папку

Power shell и selenium проще чем кажется


Создание, удаление, управление точками восстановления в Windows 10 и 11

Power shell и selenium проще чем кажется


Всем привет! Порой, написать графическую форму для консольного приложения может оказаться очень удобным решением, тем самым не нужно запоминать все ключи программы, особенно, если пользоваться им приходится изредка, тем самым автоматизируя работу с данным приложением в дальнейшем. Но, ситуация может быть обратной, когда приложение имеет только графический интерфейс, а вам нужно получить вывод его работы в консоли, например, для возможности передачи метрик в систему мониторинга. С тех пор как начал проводить все больше времени в консоли, заметил, что становится менее удобно переключаться на ранее привычные инструменты, лишний раз использовать мышь, держать открытыми излишние приложения или вкладки в браузере, особенно, если работаешь на удаленной машине без прямого доступа к графическому интерфейсу. У меня накопилась небольшая коллекция полезных модулей, большинство из которых написаны совсем недавно, успел привыкнуть при регулярном использовании и хотелось бы ими поделиться. Осознавая, что тенденция ухода Windows систем на территории РФ растет, тем не менее думаю еще очень много людей, кто так же как и я продолжают использовать данную систему и автоматизировать свою работу, возможно, представленные модули так же смогут пригодятся. Все модули опубликованы в репозитории на GitHub и менеджере пакетов Nuget, откуда их можно установить одной командой.

PowerShell модуль представляет собой набор функций, которых объединяет между собой файл с расширением psm1 и манифест psd1 (последний не обязателен для работы модуля, нужен для его описания). Модули используют для взаимодействия с приложением или целой системой (например, система хранения TrueNAS, резервного копирования Veeam, виртуализации VMWare или Hyper-V, различными системами баз данных и т.п.), с возможностью повторного применения описанных в нем функций на уровне системы и его массового распространения через менеджеров пакетов. Еще модуль можно воспринимать как cli (интерфейс командной строки) для конкретного приложения, тем самым позволяя взаимодействовать с ним оперируя параметрами в консоли, при этом имея возможность для дальнейшей автоматизации или интеграции с другими сервисами напрямую через язык PowerShell. Например, команда для вывода содержимого файлов в консоли Get-Content, или более привычный для Linux систем псевдоним cat по факту представляет PowerShell функцию, базирующуюся на .NET, которая в свою очередь входит в состав модуля Microsoft.PowerShell.Management.

Console-Translate

На протяжении нескольких лет я пользуюсь переводчиком DeepL практически на ежедневной основе. Меня не всегда устраивает то, что у него есть ограничение в 1500 символов, тем не менее, так как у него есть полноценное десктопное приложение, это удобная альтернатива браузерным решениям, которое всегда под рукой на горячей клавише. Сменив место работы, и получив ограничение в самостоятельной установке какого-либо стороннего программного обеспечения на рабочем ноутбуке, пришлось задуматься в сторону альтернативного и простого решения, так как пользоваться переводчиком и при этом консолью я реже не стал, пришла идея использовать единый интерфейс. Для доступа к переводу текста в консоли можно использовать REST API, к сожалению, получить бесплатный ключ доступа DeepL для России невозможно, но тут можно найти много альтернатив. Во-первых, существует проект DeepLX с открытым исходным кодом, с помощью которого можно запустить свой бесплатный API-сервер, который может быть доступен одновременно нескольким пользователям в сети. Во-вторых, каждый, кто использует расширение Google Translate в своем браузере может перехватить публичный API-ключ (используя интерфейс DevTools во вкладке Network) с возможностью его использования через любой REST-клиент в консоли. И в-третьих, существует немало бесплатных провайдеров для перевода текста с наличием API, например MyMemory, которая содержит одну из крупнейших баз для переводов. Все перечисленные сервисы получилось внедрить в один модуль Console-Translate, который можно установить в своей консоли с помощью одной команды:

Install-Module Console-Translate -Repository NuGet

Необходимо, чтобы предварительно у вас в системе уже был зарегистрирован менеджер пакетов Nuget:

Register-PSRepository -Name "NuGet" -SourceLocation "https://www.nuget.org/api/v2" -InstallationPolicy Trusted

Синтаксис простой, в первый параметр передается текст (если вы используете более одного слова, обязательно необходимо заключить весь передаваемый текст в кавычки), второй (через пробел) отвечает на язык назначения, например так:

> Get-Translate "Как дела?"
How are you?

> Get-Translate "Как дела?" de
Wie geht es Ihnen?

По умолчанию перевод происходит между Русским и Английским языком в обоих направлениях, с автоматически определением языка на уровне PowerShell. Т.к. на уровне API не всегда хорошо срабатывает определение языка, добавил достаточно простую реализацию, так как акцент сделан на двух языках, каждый раз происходит подсчет переданных букв с разбивкой (методом Char) на русские и английские символы, букв какого из языков окажется больше, тот и будет являться исходным языком, и соответственно второй будет являться языком назначения (пример на скриншоте ниже).

Перевод текста в консоли через PowerShell на Linux и Windows машинах

С появления версии PowerShell Core данный язык является кроссплатформенным, по этой причине модуль будет работать в системе Linux, где я так же часто его использую, как и сам язык в силу привычки.

CrystalDiskInfo

У программы CrystalDiskInfo нет командного интерфейса для прямого взаимодействия через консоль, есть возможность только сформировать файловый отчет, где содержится много лишней информации в текстовом виде. Помимо этого отчета, программа так же хранит информацию в конфигурационных ini-файлах, которые обновляются в процессе сканирования или изменения настроек. Модуль CrystalDisk-Cli читает эти конфигурационные файлы и выводит результат в формате OSObject или Collection (необходимо, что бы программа CrystalDiskInfo уже была установлена). Вывод работы модуля будет выглядеть так:

Установить модуль CrystalDisk-Cli можно также одной командой:

> Install-Module CrystalDisk-Cli -Repository NuGet
> Import-Module CrystalDisk-Cli
> Get-DiskInfo

Name                    : WD PC SN740 SDDPNQD-1T00-10272243A5454811
Date                    : 2024/02/19 11:16:48
HealthStatus            : 1
Temperature             : 48
PowerOnHours            : 1010
PowerOnCount            : 448
Life                    : 100
HostWrites              : 10322
HostReads               : 10092
01                      : 0
02                      : 0
03                      : 0
04                      : 0
05                      : 0
ReallocatedSectorsCount : 0
06                      : 0
07                      : 0
08                      : 0
09                      : 0
0A                      : 0
0B                      : 0
0C                      : 0
0D                      : 0
0E                      : 0
0F                      : 0

Если необходимо обновить информацию и получить актуальный отчет, используется параметр Report (если консоль не запущена с правами администратора, при запуске появится окно, которое запросит подтверждение). Само приложение производит автоматическое обновление с заданным промежутком времени, которое можно изменить в настройках программы, например каждые 5 минут, используя команду: Get-DiskInfoSettings -AutoRefresh 5 (при запуске без параметров вернет текущие настройки, для изменения настроек понадобится запустить консоль с правами администратора). Вот пример вывода для нескольких дисков:

:/>  Как отключить слежку в Windows 7

Вывод работы модуля CrystalDisk-Cli

Everything

Install-Module PSEverything -Repository NuGet
Find-Everything ".temp" -ComputerName plex-01 -Port 9999 -User every -Password thing # удаленное получение данных
Find-Everything ".temp" # локальное получение данных
$(Find-Everything ".temp").Count # посчитать количество файлов, подходящих под критерии поиска

Поиск файлов через модуль PSEverything

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

SpeedTest

У меня как-то была задача, реализовать мониторинг скорости интернета получаемую от провайдера на регулярной основе. Для примера, можно воспользоваться всеми известным Speedtest от Ookla, у данного сервиса уже присутствует cli-интерфейс, вывод которой можно распарсить, но это не единственный провайдер для предоставления подобный услуги и требует зависимость в виде исполнимого файла. В случае c встроенным Windows PowerShell версии 5.1 есть возможность использовать Internet Explorer через COM интерфейс, тем самым в браузере автоматизировать нажатие кнопок в фоновом режиме и забирать содержимое страницы прямо в консоль, для дальнейшей обработки и вывода в формате объекта, как это реализовано в модуле Ookla-SpeedTest-API. Вот пример:

Get-PackageProvider # проверяем, что провайдер пакетов nuget установлен
Find-PackageProvider # отобразить все допступные менеджеры пакетов
Install-PackageProvider nuget # установить менеджер пакетов nuget
Set-PackageSource nuget -Trusted # разрешаем установки пакетов из указанного источника
Find-Package Ookla-SpeedTest # ищем пакеты по названию во всех менеджерах
Install-Module Ookla-SpeedTest -Scope CurrentUser # установить модуль для текущего пользователя

### Запускаем модуль и забираем метрики
$test = Invoke-SpeedTest
$test | Select-Object date,download,upload

date                download upload
----                -------- ------
19.02.2024 14:00:15    37263  19320

Измерение скорости интернета через Ookla Speedtest в PowerShell 5.1

Используя такой модуль, можно настроить отправку метрик в базу данных и вывести данные на dashboard Grafana (такой пример с созданием службы есть на GitHub). Хотя данный подход уже является устаревшим, он не требует никаких зависимостей, но при этом не поддерживается в версии PowerShell Core. Для подобных целей правильнее использовать библиотеку Selenium (версии dotNET), например через браузер Chrome/Chromium, подробнее про установку зависимостей и создание модулей я уже писал пост на Habr. Вот пример вывода на примере OpenSpeedTest и LibreSpeedTest:

Измерение скорости интернета через Open и Libre Speedtest в PowerShell Core

Сервер и клиент Syslog

Маловероятно, что вам понадобится запустить сервер для сбора логов на системе Windows, при условии, что чаще для этих целей используют сервера на базе Linux, к тому же имеется достаточно большое количество отличных альтернатив, например Visual Syslog. Но если у вас есть запрет на запуск какого-либо стороннего программного обеспечения на системах Windows (что в моем случае и послужило причиной) или например PowerShell скрипт, события работы которого необходимо настроить для передачи серверу Syslog, данный процесс можно автоматизировать с помощью модуля pSyslog. Для установки и запуска серверной части используйте следующие команды:

Install-Module pSyslog -Scope CurrentUser
Start-pSyslog -Port 514
Get-pSyslog # читает входящие сообщения в реальном времени
Show-pSyslog # читает локальный файловый журнал

Для отправки сообщения на любой сервер Syslog, используйте команду Send-pSyslog:

Отправка сообщения на сервер Syslog

Серверная и клиентская часть базируются на классе .NET System.Net.Sockets, все источники документации и примеры работы есть в описании репозитория. Модуль поддерживает шифрование Base64, UDP Relay и ротацию локального журнала, который возможно настроить для получения метрик, например, по типу сообщения или содержимому. Протестировано в работе для версии Windows PowerShell на разных билдах до 3-х одновременных клиентов, также работает в версии Core.

Windows API

Модуль ps.win.api – это полноценный REST API и Web сервер на чистом PowerShell, серверная часть которого базируется на классе .NET HttpListener. Про то, как создать такой сервер я уже писал статью на Habr, с тех пор прошло не так много времени, тем не менее функционала стало больше, в том числе добавлен модуль, который позволяет запускать серверную часть в режиме фонового процесса и управлять им, а также он включает в себя большую часть используемых функций с возможностью удаленного взаимодействия с сервером для каждой команды, вывод которых будет одинаковый как для локальной, так и для удаленной машины. Все функции представляют из себя дополненный и более читаемый вывод уже встроенных WMI/CIM команд, результат которых можно получить с удаленный машины через данный модуль в PowerShell, или любой REST-клиент, например curl в Linux, без необходимости конфигурации WinRM или ssh.

Устанавливаем модуль и запускаем серверную часть на одной машине:

Install-Module ps.win.api -Repository NuGet -AllowClobber
Import-Module ps.win.api
Start-WinAPI
Test-WinAPI

Port Status
---- ------
8443 Open

На удаленной машине предварительно устанавливаем модуль и используем функцию, например, для удаленного и локального просмотра датчиков температуры дисков:

Get-Smart
Get-Smart -ComputerName 192.168.3.100 -User rest -Pass api -Port 8443

Пример вывода температуры датчиков на локальной и удаленной Windows машинах

Примеры работы и настройки можно найти в репозитории на GitHub. Также помимо запуска и остановки служб и процессов, добавлен функционал просмотра всех журналов событий Windows через Web-интерфейс с возможностью фильтрации вывода, пример для ssh подключений на скриншоте:

Get-Query

В системе Windows для просмотра в консоли списка текущих авторизованных пользователей, а также запущенных ими процессов присутствует встроенная программа query.exe, которая отдает вывод в текстовом формате. Модуль Get-Query преобразуя вывод команды в формат объекта, что позволяет использовать его для мониторинга активных пользовательских сессий, например, через активного Zabbix-агента, а также с помощью такого модуля (или любого другого подобного модуля в формате PSObject) можно заполнить таблицу DataGridView используемую в Windows Forms, данный подход я использовал в проекте RSA. Пример вывода для одного пользователя:

Install-Module Get-Query
Get-Query

User      : lifailon
Session   : console
ID        : 1
Status    : Active
IdleTime  : отсутствует
LogonTime : 12.02.2024 13:08

Итог

По мимо перечисленных модулей, присутствуют модули на мониторинга Veeam репозиториев и заданий, а так же датчиков температуры системы через Open и LibreHardwareMonitor, статью про последний я также писал на Habr, где упоминал про кастомизацию терминала, используя профили для oh-my-posh. Всего модулей в различных репозитория огромное множество, менеджер Nuget насчитывает больше 392 тысяч пакетов, 30 тысяч из которых составляют модули для PowerShell и библиотеки, которые могут быть интегрированы через платформу .NET. Использование удобных именно для вас модулей заставляет меньше покидать терминал, а времяпровождение в консоли приносит все больше удовольствия, и как мне кажется, формирует полезную привычку в дальнейшем.

Оставьте комментарий