Подключение к активной сессии пользователя powershell gui

Я пытаюсь сделать снимок экрана каждого из моих экранов.

К сожалению, после нескольких часов поиска, я ничего не нашел.

Вот содержимое моего фактического сценария PowerShell:

Настал тот момент, когда необходимо уйти от всех зарубежных программ удаленного подключения, по крайней мере, в нашей компании. После изучения отечественных аналогов мы были поражены стоимостью и качеством работы ПО. Размышляя о необходимом функционале для подключения 1-й линии к пользователям, мы поняли:

- Нам будет достаточно простого PowerShell.

Для выполнения дальнейших действий необходимо установить модуль Active Directory для PowerShell.

Теперь необходимо выполнить действие при нажатии на кнопку $FormButton, в котором мы должны найти активный сеанс пользователся удаленного ПК и подключиться к этому сеансу.

Скрипт готов, запускаем проверку.

Мы также можем добавить проверки.

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

PowerShell хорошо, но его запуск - неудобно. Есть возможность конвертировать скрипт в exe файл.

Вы можете использовать объекты .NET Framework в Windows PowerShell для создания графических элементов для ваших скриптов PowerShell. Часто используемыми библиотеками являются .NET Windows Forms (WinForms) или Windows Presentation Foundation (WPF).

## Создание графического интерфейса для сценария PowerShell с использованием класса WinForms

Откройте свой редактор кода PowerShell (используйте встроенное PowerShell ISE или установите VSCode) и создайте новый файл .PS1.

### Создание формы GUI с помощью PowerShell

Чтобы использовать объекты WinForms, загрузите класс .NET System.Windows.Forms в вашу сессию PowerShell.

```powershell
Add-Type -assembly System.Windows.Forms

Затем создайте форму, которая будет содержать графические элементы:

$main_form = New-Object System.Windows.Forms.Form

Установите заголовок формы и размер (установите его ширину и высоту в пикселях):

$main_form.Text =GUI для моего сценария PowerShell
$main_form.Width = 600
$main_form.Height = 400

Включите свойство AutoSize, чтобы форма автоматически расширялась, когда элементы превышают ее границы.

$main_form.AutoSize = $true

Теперь отобразите форму на экране:

Запустите сценарий (нажмите F5 в вашем редакторе кода).

Подключение к активной сессии пользователя powershell gui

Добавление элементов управления на форму PowerShell

Добавьте ярлык на форму (показывает произвольный текст):

$Label2 = New-Object System.Windows.Forms.Label
$Label2.Text = Последняя установка пароля:
$Label2.Location = New-Object System.Drawing.Point(0,40)
$Label2.AutoSize = $true
$main_form.Controls.Add($Label2)

$Label3 = New-Object System.Windows.Forms.Label
$Label3.Text = 
$Label3.Location = New-Object System.Drawing.Point(110,40)
$Label3.AutoSize = $true
$main_form.Controls.Add($Label3)

Подсказка. Свойство .Font позволяет изменить семейство шрифтов и размер элемента пользовательского интерфейса:

$Label3.Font = Microsoft Sans Serif, 14

## Добавление элемента кнопки к форме:

```powershell
$Button = New-Object System.Windows.Forms.Button
$Button.Location = New-Object System.Drawing.Size(400,10)
$Button.Size = New-Object System.Drawing.Size(120,23)
$Button.Text = Check
$main\_form.Controls.Add($Button)

Добавление обработчиков событий в сценарий PowerShell

Некоторые элементы пользовательского интерфейса на форме могут быть скрыты с помощью свойства Visible.

$Label3.Text.Visible = $false # или $True, если вы хотите его показать

Подключение к активной сессии пользователя powershell gui

Добавление пользовательского меню GUI в сценарии PowerShell

Создайте новые объекты для вашего меню:

$menuMain = New-Object System.Windows.Forms.MenuStrip
$mainToolStrip = New-Object System.Windows.Forms.ToolStrip
$menuFile = New-Object System.Windows.Forms.ToolStripMenuItem
$menuOpen = New-Object System.Windows.Forms.ToolStripMenuItem
$menuSave = New-Object System.Windows.Forms.ToolStripMenuItem
$menuExit = New-Object System.Windows.Forms.ToolStripMenuItem
$menuHelp = New-Object System.Windows.Forms.ToolStripMenuItem
$menuAbout = New-Object System.Windows.Forms.ToolStripMenuItem
$toolStripOpen = New-Object System.Windows.Forms.ToolStripButton
$toolStripSave = New-Object System.Windows.Forms.ToolStripButton
$toolStripExit = New-Object System.Windows.Forms.ToolStripButton
$toolStripAbout = New-Object System.Windows.Forms.ToolStripButton

Теперь вам нужно привязать ваше меню к форме GUI ($main_form):

$main_form.Controls.Add($menuMain)

Теперь вы можете отобразить первое меню:

$menuMain.Items.Add($menuFile)

Затем добавьте выпадающий пункт меню в меню Файл:

$menuFile.DropDownItems.Add($menuOpen)

Теперь добавим следующий раздел меню:

$menuFile.DropDownItems.Add($menuSave)

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

:/>  Nigma ru поисковая система

Подключение к активной сессии пользователя powershell gui

Использование стандартных диалоговых окон Windows в сценариях PowerShell

Сообщение является обязательным атрибутом MessageBox. Заголовок, кнопка и значок являются необязательными.

Показать диалоговое окно ОК:

[void][System.Windows.Forms.MessageBox]::Show(Текст сообщения)

Отобразить диалоговое окно, требующее ответа (Да/Нет/Отмена):

$button = [System.Windows.Forms.MessageBox]::Show(Текст, Заголовок, YesNoCancel, Question)

Подключение к активной сессии пользователя powershell gui

Показать стандартное Windows диалоговое окно выбора файла с фильтрацией по именам файлов:

$fileDialog = New-Object System.Windows.Forms.OpenFileDialog
$fileDialog.Filter = Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*
$fileDialog.ShowDialog()

Подключение к активной сессии пользователя powershell gui

Открыть диалоговое окно Обзора папки:

$shell = New-Object -ComObject Shell.Application
$selectedfolder = $shell.BrowseForFolder(0, Выберите папку для продолжения, 16, $shell.NameSpace(17).Self.Path).Self.Path

Подключение к активной сессии пользователя powershell gui

Выбор диалоговой формы принтера:

Подключение к активной сессии пользователя powershell gui

Создание пользовательского интерфейса для сценариев PowerShell с помощью Visual Studio

Подключение к активной сессии пользователя powershell gui

Подключение к активной сессии пользователя powershell gui

Используйте элемент Windows Forms в левой панели Toolbox, чтобы разместить элемент управления на форме (с помощью функции drag&drop).

Подключение к активной сессии пользователя powershell gui

Сохраните изменения в файле XAML.

Теперь вы можете прочитать этот код XAML из своего сценария PowerShell и отобразить окно Windows.

Чтобы отобразить вашу форму, выполните метод:

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

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

Подключение к активной сессии пользователя powershell gui

Уважаемые пользователи форума, помогите, пожалуйста, с следующим вопросом. Я пытаюсь создать приложение с графическим интерфейсом в Powershell. Так как я новичок в программировании, то решил обратиться на форум за помощью. Суть приложения заключается в вводе названия автомобиля в $InputBox.text и последующем отображении эмблемы автомобиля в $PictureBox.

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

Я хочу, чтобы программа отображала изображение в $PictureBox строго заданного размера: ширина 200, высота 110.

Если изображение больше по ширине – 200 и высоте – 110, я хочу, чтобы программа сжала его до размеров ширина – 200 и высота – 110 и отобразила изображение в $PictureBox.

:/>  Ноут не видит зарядку от сети

Если изображение меньше ширины – 200 и высоты – 110, я хочу, чтобы программа растянула его до размеров ширина – 200 и высота – 110 и отобразила изображение в $PictureBox.

На скриншоте ниже показано, как программа выглядит сейчас.

Заранее благодарю за помощь.

Подключение к активной сессии пользователя powershell gui

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

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

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

Сценарии PowerShell на основе графического интерфейса также часто используются, когда IT-отделу нужно создать сценарий, который будет использовать кто-то извне IT. Внедрение графического интерфейса улучшает удобство использования сценария, делая его более доступным для сотрудников не из IT.

Как создать графический интерфейс PowerShell

Хотя сценарии PowerShell на основе графического интерфейса часто сложны, создать простой графический интерфейс довольно легко. Давайте создадим простой сценарий, который отображает слова Hello World внутри текстового поля в графическом интерфейсе.

Загрузка необходимых сборок

Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing

Создание элементов пользовательского интерфейса GUI

Далее создайте отдельные элементы интерфейса, которые вы будете использовать в GUI. Это могут быть метки (текст), текстовые поля, комбинированные поля (меню), кнопки или другие графические элементы.

$OutputBox = New-Object System.Windows.Forms.textbox 
$OutputBox.Text = Hello World 
$OutputBox.Multiline = $False 
$OutputBox.Size = New-Object System.Drawing.Size(100,100) 
$OutputBox.Location = New-object System.Drawing.Size(20,80)

Для определения элемента пользовательского интерфейса GUI создайте переменную, которая будет представлять этот элемент. В моем примере переменная представляет объект текстового поля, поскольку я называю переменную $OutputBox и устанавливаю ее равной New-Object System.Windows.Forms.textbox.

Определение атрибутов элемента

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

:/>  Как на клавиатуре вывести на печать

В моем примере это текстовое поле для одной строки, поскольку $OutputBox.Multiline установлено на False. Поэтому Windows проигнорирует высоту текстового поля и просто сделает его таким высоким, насколько ему нужно для размещения одной строки текста.

Создание объекта формы

$Form = New-Object Windows.Forms.Form 
$Form.Text = Пример GUI Пози 
$Form.Width = 300 
$Form.Height = 200 
$Form.BackColor=LightBlue

Здесь я создал объект формы и связал его с переменной с именем $Form. Размер формы составляет 300 пикселей в ширину и 200 пикселей в высоту. Я также выбрал цвет формы светло-голубым и дал окну имя Пример GUI Пози.

Активация формы

Последний шаг в процессе – активировать и отобразить форму. Вы можете сделать это с помощью следующих строк кода.

Изображение формы

Использование PowerShell GUI для создания виртуальной машины Hyper-V

Создание VM в GUI

На структурном уровне этот скрипт работает очень похоже на мой пример Hello World. Большим отличием является то, что я определил гораздо больше элементов пользовательского интерфейса GUI. Весь текст, появляющийся в GUI, контролируется объектами меток. Также имеются два текстовых поля для ввода имени ВМ и размера виртуального жесткого диска. GUI также содержит комбинированное поле, используемое для выбора объема памяти, и кнопку Отправить.

При создании объекта кнопки вам обычно нужно связать действие при нажатии на кнопку как способ сообщить PowerShell, что делать, когда кнопка нажата. В данном случае действие при нажатии содержит несколько строк кода, которые извлекают введенные значения в GUI и помещают эти значения в нормализованный формат.

Затем скрипт создает строку, которая имитирует команду для создания ВМ. Затем вы можете использовать команду Invoke-Expression для выполнения содержимого строки.

Ниже приведен полный код для ознакомления.

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