Я пытаюсь сделать снимок экрана каждого из моих экранов.
К сожалению, после нескольких часов поиска, я ничего не нашел.
Вот содержимое моего фактического сценария 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
Добавьте ярлык на форму (показывает произвольный текст):
$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, если вы хотите его показать
Добавление пользовательского меню 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. Горизонтальное меню с вложенными подпунктами будет отображаться в верхней части формы.
Использование стандартных диалоговых окон Windows в сценариях PowerShell
Сообщение является обязательным атрибутом MessageBox. Заголовок, кнопка и значок являются необязательными.
Показать диалоговое окно ОК:
[void][System.Windows.Forms.MessageBox]::Show(Текст сообщения)
Отобразить диалоговое окно, требующее ответа (Да/Нет/Отмена):
$button = [System.Windows.Forms.MessageBox]::Show(Текст, Заголовок, YesNoCancel, Question)
Показать стандартное Windows диалоговое окно выбора файла с фильтрацией по именам файлов:
$fileDialog = New-Object System.Windows.Forms.OpenFileDialog
$fileDialog.Filter = Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*
$fileDialog.ShowDialog()
Открыть диалоговое окно Обзора папки:
$shell = New-Object -ComObject Shell.Application
$selectedfolder = $shell.BrowseForFolder(0, Выберите папку для продолжения, 16, $shell.NameSpace(17).Self.Path).Self.Path
Выбор диалоговой формы принтера:
Создание пользовательского интерфейса для сценариев PowerShell с помощью Visual Studio
Используйте элемент Windows Forms в левой панели Toolbox, чтобы разместить элемент управления на форме (с помощью функции drag&drop).
Сохраните изменения в файле XAML.
Теперь вы можете прочитать этот код XAML из своего сценария PowerShell и отобразить окно Windows.
Чтобы отобразить вашу форму, выполните метод:
Теперь добавьте обработчики событий для различных элементов формы. Например, я хочу, чтобы сообщение появлялось, когда я нажимаю кнопку OK.
Убедитесь, что действие из функции OnOkButtonClick теперь выполняется при нажатии кнопки на форме.
Уважаемые пользователи форума, помогите, пожалуйста, с следующим вопросом. Я пытаюсь создать приложение с графическим интерфейсом в Powershell. Так как я новичок в программировании, то решил обратиться на форум за помощью. Суть приложения заключается в вводе названия автомобиля в $InputBox.text и последующем отображении эмблемы автомобиля в $PictureBox.
Папка, в которой будут находиться изображения эмблем автомобилей, будет содержать много изображений разного размера.
Я хочу, чтобы программа отображала изображение в $PictureBox строго заданного размера: ширина 200, высота 110.
Если изображение больше по ширине – 200 и высоте – 110, я хочу, чтобы программа сжала его до размеров ширина – 200 и высота – 110 и отобразила изображение в $PictureBox.
Если изображение меньше ширины – 200 и высоты – 110, я хочу, чтобы программа растянула его до размеров ширина – 200 и высота – 110 и отобразила изображение в $PictureBox.
На скриншоте ниже показано, как программа выглядит сейчас.
Заранее благодарю за помощь.
Сценарии 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
На структурном уровне этот скрипт работает очень похоже на мой пример Hello World. Большим отличием является то, что я определил гораздо больше элементов пользовательского интерфейса GUI. Весь текст, появляющийся в GUI, контролируется объектами меток. Также имеются два текстовых поля для ввода имени ВМ и размера виртуального жесткого диска. GUI также содержит комбинированное поле, используемое для выбора объема памяти, и кнопку Отправить.
При создании объекта кнопки вам обычно нужно связать действие при нажатии на кнопку как способ сообщить PowerShell, что делать, когда кнопка нажата. В данном случае действие при нажатии содержит несколько строк кода, которые извлекают введенные значения в GUI и помещают эти значения в нормализованный формат.
Затем скрипт создает строку, которая имитирует команду для создания ВМ. Затем вы можете использовать команду Invoke-Expression для выполнения содержимого строки.
Ниже приведен полный код для ознакомления.