Powershell gui выбор файла

Обновлено: 03.07.2024

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

Получение списка файлов и папок, содержащихся в папке

Извлечь все элементы непосредственно из папки можно с помощью командлета Get-ChildItem . Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает непосредственное содержимое диска C Windows PowerShell (которое совпадает с содержимым физического диска C Windows):

Эта команда выводит только элементы, содержащиеся на диске непосредственно, так же как и команда DIR оболочки Cmd.exe или команда ls оболочки UNIX. Для показа вложенных элементов необходимо также указать параметр -Recurse . (Время выполнения этой операции будет очень велико.) Для вывода всего содержимого диска C введите:

Командлет Get-ChildItem позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Сложную фильтрацию на основе других свойств элементов можно выполнить с помощью Where-Object .

Следующая команда находит все исполняемые файлы в папке Program Files, которые были в последний раз изменены после 1 октября 2005 г. и размер которых не менее одного мегабайта и не более десяти мегабайт:

Копирование файлов и папок

Копирование выполняется с помощью командлета Copy-Item . Следующая команда создает резервную копию C:\boot.ini в C:\boot.bak:

Если целевой файл уже существует, то попытка копирования завершается неудачей. Чтобы перезаписать имеющийся целевой файл, используйте параметр Force.

Эта команда работает, даже если целевой объект доступен только для чтения.

Так же выполняется и копирование папок. Эта команда копирует папку C:\temp\test1 в новую папку C:\temp\DeleteMe рекурсивно.

Можно также скопировать избранные элементы. Следующая команда копирует все файлы TXT, содержащиеся в папке C:\data , в папку C:\temp\text :

Для копирования элементов файловой системы можно использовать и другие средства. В Windows PowerShell по-прежнему работают команды XCOPY, ROBOCOPY и такие COM-объекты, как Scripting.FileSystemObject. Например, можно воспользоваться COM-классом Scripting.FileSystem сервера сценариев Windows для создания резервной копии файла C:\boot.ini в файле C:\boot.bak :

Создание файлов и папок

Создание новых элементов осуществляется одинаковым образом всеми поставщиками Windows PowerShell. Если поставщик Windows PowerShell поддерживает более одного типа элементов (например, поставщик Windows PowerShell FileSystem различает каталоги и файлы), необходимо указать тип элемента.

Эта команда создает папку C:\temp\New Folder :

Эта команда создает пустой файл C:\temp\New Folder\file.txt .

При использовании параметра Force с командой New-Item для создания папки, которая уже существует, она не перезапишет и не заменит папку. Будет просто возвращен имеющийся объект папки. Однако, если использовать New-Item -Force в уже имеющимся файле, файл будет полностью перезаписан.

Удаление всех файлов и папок, содержащихся в папке

Удалить вложенные элементы можно с помощью командлета Remove-Item , однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. Например, при попытке удаления папки C:\temp\DeleteMe , которая содержит другие элементы, Windows PowerShell предварительно предложит подтвердить удаление этой папки:

Если подтверждение для каждого вложенного элемента нежелательно, задайте параметр Recurse:

Подключение локальной папки как диска

Отобразить локальную папку можно с помощью команды New-PSDrive . Следующая команда создает локальный диск P: , корневым каталогом которого является локальный каталог Program Files, отображающийся только в сеансе PowerShell:

Как и при использовании сетевых дисков, диски, отображенные в Windows PowerShell, немедленно становятся доступными оболочке Windows PowerShell. Чтобы создать подключенный диск, отображающийся в проводнике, нужен параметр -Persist . Но с этим параметром можно использовать только удаленные пути.

Чтение текстового файла в массив

Одним из наиболее общих форматов хранения текстовых данных является файл, отдельные строки которого рассматриваются как отдельные элементы. Командлет Get-Content используется для чтения всего файла за один шаг, как показано далее:

Командлет Get-Content сразу рассматривает данные, считанные из файла, как массив с одним элементом на строку содержимого файла. Убедиться в этом можно, проверив свойство Length полученного содержимого:

Эта команда наиболее полезна для непосредственного ввода в Windows PowerShell информационных списков. Например, можно хранить в файле C:\temp\domainMembers.txt список имен компьютеров или IP-адресов по одному имени на каждую строку файла. Вы можете использовать командлет Get-Content , чтобы извлечь содержимое файла и поместить его в переменную $Computers :

Теперь переменная $Computers представляет собой массив, содержащий в каждом элементе имя компьютера.

В данном примере мы используем PowerShell 3.0+ (я буду писать скрипт в PowerShell ISE в Windows 10).

Add-Type -assembly System.Windows.Forms

Теперь создадим графическую форму (окно):

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

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

$window_form.Text ='Пример графического интерфейса для скрипта PowerShell'
$window_form.Width = 500
$window_form.Height = 200

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

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

вывод графической формы в скрипте powershell

Как вы видите, на экране появилась пустая форма указанных размеров. Чтобы добавить не нее различные графические диалоговые элементы, перед строкой $window_form.ShowDialog() добавим следующие строки.

Создадим на форме надпись:

$FormLabel1 = New-Object System.Windows.Forms.Label
$FormLabel1.Text = "Выберите пользователя домена AD"
$FormLabel1.Location = New-Object System.Drawing.Point(0,10)
$FormLabel1.AutoSize = $true
$window_form.Controls.Add($FormLabel1)

Создадим выпадающий список и заполним его списком учетных записей из домена, полученных с помощью командлета Get-ADuser (входит в модуль ActiveDirectory для PowerShell).

$FormLabel2 = New-Object System.Windows.Forms.Label
$FormLabel2.Text = "Последняя смена пароля:"
$FormLabel2.Location = New-Object System.Drawing.Point(0,40)
$FormLabel2.AutoSize = $true
$window_form.Controls.Add($FormLabel2)
$FormLabel3 = New-Object System.Windows.Forms.Label
$FormLabel3.Text = ""
$FormLabel3.Location = New-Object System.Drawing.Point(140,60)
$FormLabel3.AutoSize = $true
$window_form.Controls.Add($FormLabel3)

Теперь поместим на форму кнопку действия с надписью «Проверить»:

$FormButton = New-Object System.Windows.Forms.Button
$FormButton.Location = New-Object System.Drawing.Size(400,10)
$FormButton.Size = New-Object System.Drawing.Size(100,20)
$FormButton.Text = "Проверить"
$window_form.Controls.Add($FormButton)

Теперь к созданной кнопке привяжем скрипт проверки, которые должен вызываться при щелчке на кнопке (событие Add_Click). Для преобразования даты из формата TimeStamp в нормальный вид воспользуемся функцией [datetime]::FromFileTime.

$FormButton.Add_Click(
$FormLabel3.Text = [datetime]::FromFileTime((Get-ADUser -identity $FormComboBox.selectedItem -Properties pwdLastSet).pwdLastSet).ToString('dd mm yy : hh ss')
>
)

Запустите PowerShell скрипт. Как вы видите, он заполняет выпадающий список именами учётных записей из AD. Если вы выберите нужную учетную запись пользователя и нажмите на кнопку, в поле отобразится время последней смены пароля данного пользователя в Active Directory.

простой GUI для скрипт powershell

Аналогичным образом вы можете создать следующие графические элементы на форме:

  • CheckBox
  • RadioButton
  • TextBox
  • ChekedListBox
  • GroupBox
  • ListBox
  • TabControl
  • ListView
  • TreeView
  • DateTimePicker
  • TrackBar
  • PictureBox
  • ProgressBar
  • HScrollBar
  • VScrollBar
  • ContextMenu
  • Menu

Для вывода диалогового окна с уведомлением пользователю можно испоьзоват следующий код:

[System.Windows.Forms.MessageBox]::Show("Запущен процесс расчета","Предупреждение",0)

poshgui - онлайн генератор редактор графических форм для powershell

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

Зачем нужна оболочка PowerShell?

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

На мой взгляд, лучшим в PowerShell является то, что ее можно использовать совместно с таким большим количеством функций ОС Windows и приложений сторонних производителей – предоставляющих вам контроль и управление всеми серверами Windows (ОС и приложений).

Если вы используете Windows 7, PowerShell 2.0 уже включена и установлена. Все более старые ОС нуждаются в установке оболочки с Microsoft Script Center homepage.

В Windows 7 просто перейдите в меню Пуск, Инструменты администрирования (Administrative Tools), а затем Windows Powershell Modules. Вы увидите командную строку PowerShell:

*

Рисунок 1: PowerShell CLI

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

Решением этой проблемы будет PowerGUI.

Что такое PowerGUI и как он может помочь?

Прежде чем вы решите, что я пытаюсь продать вам какой-то коммерческий продукт, позвольте мне сначала сказать, что PowerGUI абсолютно бесплатен, равно как и библиотеки PowerGUI и форумы.

PowerGUI может помочь вам следующим образом:

  1. Позволяет вам выполнять сценарии PowerShell, не имея знаний в области языка сценариев
  2. Позволяет видеть сценарии, который PowerGUI создает, чтобы вы могли понять PowerShell, а также позволяет вам экспортировать эти сценарии (которые вы можете изменять и создавать из них собственные)
  3. Дает возможность добавлять библиотеки "PowerPack Libraries", чтобы можно было расширять функциональность до сотен других приложений и/или функций Windows (смотрите рисунок 2)
  4. Предлагает удобный редактор сценариев PowerShell, упрощающий работу со сценариями (смотрите рисунок 3)

*

Рисунок 2: Расширяйте возможности PowerGUI с PowerPacks из библиотеки

Рисунок 3: Редактор PowerShell Script Editor

Где его взять и как установить?

Загрузка и установка PowerGUI

Файл размером 8МБ для установки PowerGUI можно найти на странице PowerGUI. Как вы могли догадаться, судя по размеру файла, процесс загрузки и установки будет очень быстрым.

Помимо стандартных вопросов установки есть лишь один момент в GUI, о котором вам следует знать – Установка функций (Features Install). На этом этапе установки (до рисунка 4), у вас есть возможность указать, какие функции PowerGUI вы хотите установить.

*

Рисунок 4: Выбор функций PowerGUI

Сюда входят такие пакеты PowerPacks, как Exchange 2007, Active Directory и Network. Пакеты Local System и Network отмечены по умолчанию, а остальные упомянутые - нет.

Перед тем, как установка завершится, вы можете указать, нужно ли автоматически запустить PowerGUI по окончании установки. Вот как выглядит PowerGUI при первом запуске:

*

Рисунок 5: Начальный запуск PowerGUI

Этот интерфейс гораздо менее устрашающий, чем интерпретатор команд, показанный выше, не так ли?

На самом деле, я не слишком много знаю о PowerShell, я лишь начинающий, но поработав совсем немного с этим интерфейсом, я смог просматривать список пользователей на моем локальном компьютере и видеть, какие пользователи добавлены. Перейдя в меню Вид (View), а затем в PowerShell script, открылась новая закладка, в которой отображались сценарии оболочки PS, выполнявшиеся для всех моих действий. Именно в этой закладке я смог взять сценарии PS для простых задач и легко создать сценарий автоматизации, даже практически ничего не зная о том, как использовать PS. Вот как выглядит этот интерфейс на рисунке 6:

*

Р исунок 6: Просмотр выполняемых сценариев PowerShell

Заключение

Даже несмотря на то, что у меня есть большой опыт в создании и редактировании сценариев в Unix/Linux и ограниченный опыт в программировании, всегда полезно иметь под рукой инструмент с графическим интерфейсом GUI, который поможет вам начать работу, когда вы учите новый язык.

Я рад, что нашел абсолютно бесплатный инструмент PowerShell - PowerGUI. Он нравится мне, потому что помогает: 1) выполнять командные сценарии PowerShell, не зная PowerShell; 2) понять PowerShell, показывая вам сценарии, генерируемые вашими действиями в GUI; 3) позволяет расширить эту функциональность многими приложениями Windows (внутренними Windows приложениями и продуктами сторонних производителей); и 4) редактировать командные сценарии PowerShell и экспортировать их результаты. Если вам интересно изучение PowerShell, я настоятельно рекомендую вам попробовать PowerGUI.

Элементы которые я создал на форме:

Получилась вот такая форма:

Создание Формы на Powershell

Создание Формы на Powershell

Что бы получить эту форму, надо выполнить следующий скрипт:

$Label . Location = New-Object System . Drawing . Point ( 0 , 10 ) $button . Location = New-Object System . Drawing . Point ( 160 , 10 ) $CheckBox = New-Object System . Windows . Forms . CheckBox $CheckBox . Location = New-Object System . Drawing . Point ( 0 , 40 ) $RadioButton = New-Object System . Windows . Forms . RadioButton $RadioButton . Location = New-Object System . Drawing . Point ( 160 , 40 ) $ComboBox = New-Object System . Windows . Forms . ComboBox $ComboBox . Location = New-Object System . Drawing . Point ( 0 , 70 ) $TextBox = New-Object System . Windows . Forms . TextBox $TextBox . Location = New-Object System . Drawing . Point ( 160 , 70 ) $CheckedListBox = New-Object System . Windows . Forms . CheckedListBox $CheckedListBox . Location = New-Object System . Drawing . Point ( 0 , 100 ) $GroupBox = New-Object System . Windows . Forms . GroupBox $GroupBox . Location = New-Object System . Drawing . Point ( 160 , 100 ) $button2 . Location = New-Object System . Drawing . Point ( 0 , 30 ) $CheckBox2 = New-Object System . Windows . Forms . CheckBox $CheckBox2 . Location = New-Object System . Drawing . Point ( 0 , 60 ) $ListBox = New-Object System . Windows . Forms . ListBox $ListBox . Location = New-Object System . Drawing . Point ( 0 , 210 ) $TabControl = New-Object System . Windows . Forms . TabControl $TabPage1 = New-Object System . Windows . Forms . TabPage $TabLabel . Location = New-Object System . Drawing . Point ( 60 , 30 ) $TabPage2 = New-Object System . Windows . Forms . TabPage $TabControl . Location = New-Object System . Drawing . Point ( 160 , 210 ) $ListView = New-Object System . Windows . Forms . ListView $ListViewItem1 = New-Object System . Windows . Forms . ListViewItem ( "--=1=--" ) $ListViewItem2 = New-Object System . Windows . Forms . ListViewItem ( "--=2=--" ) $ListViewItem3 = New-Object System . Windows . Forms . ListViewItem ( "--=3=--" ) $ListViewItem4 = New-Object System . Windows . Forms . ListViewItem ( "--=4=--" ) $ListView . Location = New-Object System . Drawing . Point ( 0 , 320 ) $TreeView = New-Object System . Windows . Forms . TreeView $TreeView . Location = New-Object System . Drawing . Point ( 160 , 320 ) $DateTimePicker = New-Object System . Windows . Forms . DateTimePicker $DateTimePicker . Location = New-Object System . Drawing . Point ( 0 , 430 ) $TrackBar = New-Object System . Windows . Forms . TrackBar $TrackBar . Location = New-Object System . Drawing . Point ( 200 , 430 ) $PictureBox = New-Object System . Windows . Forms . PictureBox $PictureBox . Location = New-Object System . Drawing . Point ( 0 , 460 ) $ProgressBar = New-Object System . Windows . Forms . ProgressBar $ProgressBar . Location = New-Object System . Drawing . Point ( 100 , 460 ) $HScrollBar = New-Object System . Windows . Forms . HScrollBar $HScrollBar . Size = New-Object System . Drawing . Size ( 176 , 16 ) $HScrollBar . Location = New-Object System . Drawing . Point ( 0 , 510 ) $VScrollBar = New-Object System . Windows . Forms . VScrollBar $VScrollBar . Size = New-Object System . Drawing . Size ( 16 , 176 ) $VScrollBar . Location = New-Object System . Drawing . Point ( 380 , 0 ) $ContextMenu = New-Object System . Windows . Forms . ContextMenu $menuItem1 = New-Object System . Windows . Forms . menuItem $menuItem2 = New-Object System . Windows . Forms . menuItem $menuItem3 = New-Object System . Windows . Forms . menuItem
Рассмотрим этот код подробнее:

Forms

Создаём форму $main_form, которую мы будем наполнять управляющими элементами.

Это текст будет отображаться в заголовке формы $main_form.

Минимальная ширина формы $main_form.

Минимальная высота формы $main_form.

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

В конце скрипта мы отобразим форму $main_form.

Label

Создаём метку $Label

Задаём текст, который будет выводится в метке $Label.

$Label . Location = New-Object System . Drawing . Point ( 0 , 10 )

Задаём расположение метки $Label, относительно формы.

Включаем авторастягивание метки $Label если её содержимое выйдет за границы видимости.

Добавляем метку $Label на форму

Button

Создаём элемент, кнопку $button.

Задаём текст котрый будет написан на кнопке $button.

$button . Location = New-Object System . Drawing . Point ( 160 , 10 )

Определяем расположение кнопки $button.

Добавляем кнопку $button на форму.

CheckBox

$CheckBox = New-Object System . Windows . Forms . CheckBox

Объявляем элемент флажка $CheckBox

Задаём текст который будет виден на элементе с права от флажка $CheckBox

Разрешаем элементу увеличивать размер, если части элемента выйдут за переделы его видимости.

Устанавливаем флажёк в положение $true, будет отображаться галочка

$CheckBox . Location = New-Object System . Drawing . Point ( 0 , 40 )

Устанавливаем полжение элемента $CheckBox на форме

Добавляем элемент $CheckBox на форму

RadioButton

$RadioButton = New-Object System . Windows . Forms . RadioButton

Объявляем элемент $RadioButton

$RadioButton . Location = New-Object System . Drawing . Point ( 160 , 40 )

Устанавливаем полжение элемента $RadioButton на форме

Задаём текст, который будет виден на элементе $RadioButton.

Разрешаем элементу $RadioButton увеличивать размер, если части элемента выйдут за переделы его видимости.

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

ComboBox

$ComboBox = New-Object System . Windows . Forms . ComboBox

Объявляем элемент $ComboBox

Задаём список элемента $ComboBox, который будет виден, в выпадающем списке, по умолчанию видно первое значение.

$ComboBox . Location = New-Object System . Drawing . Point ( 0 , 70 )

Устанавливаем полжение элемента $ComboBox на форме

Добавляем элемент $ComboBox на форму

TextBox

$TextBox = New-Object System . Windows . Forms . TextBox

Объявляем элемент $TextBox

$TextBox . Location = New-Object System . Drawing . Point ( 160 , 70 )

Устанавливаем полжение элемента $TextBox на форме

Задаём текст, который будет вбит в элементе $TextBox, в дальнейшем его можно будет редактировать.

Добавляем элемент $TextBox на форму

CheckedListBox

$CheckedListBox = New-Object System . Windows . Forms . CheckedListBox

Объявляем элемент $CheckedListBox

Добавляем внутреннии элементы в элемент $CheckedListBox.

$CheckedListBox . Location = New-Object System . Drawing . Point ( 0 , 100 )

Устанавливаем полжение элемента на форме

Добавляем элемент $CheckedListBox на форму

GroupBox

$GroupBox = New-Object System . Windows . Forms . GroupBox

Объявляем элемент $GroupBox

Задаём текст, который будет виден в заголовке элемента $GroupBox.

Разрешаем элементу $GroupBox автоматически увеличить свои размеры, если находящиеся в нём элементы выходят за границу видимости.

$GroupBox . Location = New-Object System . Drawing . Point ( 160 , 100 )

Устанавливаем полжение элемента$GroupBox на форме

$button2 . Location = New-Object System . Drawing . Point ( 0 , 30 )

Создаём элемет кноку $button2 и помещаем его внутрь элемента GroupBox, при этом координаты свойства Location будут относительно верхнего левого края объекта GroupBox

$CheckBox2 = New-Object System . Windows . Forms . CheckBox $CheckBox2 . Location = New-Object System . Drawing . Point ( 0 , 60 )

Создаём элемет флажок $CheckBox2 и помещаем его внутрь элемента $GroupBox, при этом координаты свойства Location будут относительно верхнего левого края объекта $GroupBox.

Добавляем элемент $GroupBox на форму

ListBox

$ListBox = New-Object System . Windows . Forms . ListBox

Объявляем элемент $ListBox

$ListBox . Location = New-Object System . Drawing . Point ( 0 , 210 )

Устанавливаем полжение элемента $ListBox на форме

Добавляем элемент $ListBox на форму

TabControl

$TabControl = New-Object System . Windows . Forms . TabControl

Объявляем элемент $TabControl

$TabPage1 = New-Object System . Windows . Forms . TabPage

Объявляем новый элемент вкладка $TabPage1

Присваиваем элементу вкладка $TabPage1 текст, он будет отображаться в названии вкладки.

$TabLabel . Location = New-Object System . Drawing . Point ( 60 , 30 )

Объявляем элемент $TabLabel и размещаем его на вкладке $TabLabel при этом координтаы элемента $TabLabel.Location будут относительно левого верхнего угла вкладки $TabLabel

$TabPage2 = New-Object System . Windows . Forms . TabPage

Объявлем ещё одну вкладку $TabPage2 и подписываем её.

Добавляем эти вкладки на элемент $TabControl

$TabControl . Location = New-Object System . Drawing . Point ( 160 , 210 )

Устанавливаем полжение элемента $TabControl на форме

Добавляем элемент $TabControl на форму

ListView

$ListView = New-Object System . Windows . Forms . ListView

Объявляем элемент $ListView

$ListViewItem1 = New-Object System . Windows . Forms . ListViewItem ( "--=1=--" ) $ListViewItem2 = New-Object System . Windows . Forms . ListViewItem ( "--=2=--" ) $ListViewItem3 = New-Object System . Windows . Forms . ListViewItem ( "--=3=--" ) $ListViewItem4 = New-Object System . Windows . Forms . ListViewItem ( "--=4=--" )

Добавляем эти элементы на $ListView

$ListView . Location = New-Object System . Drawing . Point ( 0 , 320 )

Устанавливаем полжение элемента $ListView на форме

Добавляем элемент $ListView на форму

TreeView

$TreeView = New-Object System . Windows . Forms . TreeView

Объявляем элемент дерева $TreeView

$TreeView . Location = New-Object System . Drawing . Point ( 160 , 320 )

Устанавливаем полжение элемента на форме

Добавляем элемент $TreeView на форму $main_form

DateTimePicker

$DateTimePicker = New-Object System . Windows . Forms . DateTimePicker

Объявляем элемент $DateTimePicker

$DateTimePicker . Location = New-Object System . Drawing . Point ( 0 , 430 )

Устанавливаем полжение элемента $DateTimePicker на форме

Добавляем элемент $DateTimePicker на форму $main_form

TrackBar

$TrackBar = New-Object System . Windows . Forms . TrackBar

Объявляем элемент ползунок $TrackBar

$TrackBar . Location = New-Object System . Drawing . Point ( 200 , 430 )

Устанавливаем полжение элемента $TrackBar на форме

Разрешаем элементу $TrackBar увеличивать размер, если он не будет вмещаться в ввидимую часть.

Устанавливаем значение $TrackBar на 5 деление.

Добавляем элемент $TrackBar на форму $main_form

PictureBox

$PictureBox = New-Object System . Windows . Forms . PictureBox

Объявляем элемент $PictureBox

$PictureBox . Location = New-Object System . Drawing . Point ( 0 , 460 )

Устанавливаем полжение элемента $PictureBox на форме

Добавляем элемент $PictureBox на форму $PictureBox

ProgressBar

$ProgressBar = New-Object System . Windows . Forms . ProgressBar

Объявляем элемент $ProgressBar

$ProgressBar . Location = New-Object System . Drawing . Point ( 100 , 460 )

Устанавливаем полжение элемента $ProgressBar на форме

Устанавливаем значение $ProgressBar в 50

Добавляем элемент $ProgressBar на форму $main_form

HScrollBar

$HScrollBar = New-Object System . Windows . Forms . HScrollBar

Объявляем элемент $HScrollBar

$HScrollBar . Size = New-Object System . Drawing . Size ( 176 , 16 )

Устанавливаем размер элемента $HScrollBar

$HScrollBar . Location = New-Object System . Drawing . Point ( 0 , 510 )

Устанавливаем полжение элемента $HScrollBar на форме

Добавляем элемент $HScrollBar на форму $main_form

VScrollBar

$VScrollBar = New-Object System . Windows . Forms . VScrollBar

Объявляем элемент $VScrollBar

$VScrollBar . Size = New-Object System . Drawing . Size ( 16 , 176 )

Устанавливаем размер элемента $VScrollBar

$VScrollBar . Location = New-Object System . Drawing . Point ( 380 , 0 )

Устанавливаем полжение элемента $VScrollBar на форме

Добавляем элемент $VScrollBar на форму $main_form

ContextMenu

$ContextMenu = New-Object System . Windows . Forms . ContextMenu

Объявляем временный элемент $ContextMenu

Добавляем первый пункт $ContextMenu

Добавляем второй пункт $ContextMenu

Присваиваем контекстному меню форме $main_form контекстное меню $ContextMenu

Объявляем временны элемент $Menu

$menuItem1 = New-Object System . Windows . Forms . menuItem

Объявляем первый элемент меню $menuItem1

Изменяем отображаемый текст $menuItem1

Добавляем этот элемент $menuItem1 в меню $Menu

$menuItem2 = New-Object System . Windows . Forms . menuItem

Объявляем ещё один элемент меню $menuItem2, и изменяем его отображаемый текст

Добавляем элемент $menuItem2 в $menuItem1

$menuItem3 = New-Object System . Windows . Forms . menuItem

Объявляем новый элемент $menuItem3 в меню $Menu

Присваиваем Меню формы $main_form значение временному меню $Menu

Отображает форму $main_form

Комментарии:

Комментарии 49

Добрый день, спасибо за посты, очень познавательны, возник один вопрос, прикручиваю к скрипту выпадающий список,
но заметил одну особенность, текст в выпадающем списке можно изменить, искал на msdn по комбобоксу инфу, но что-то не нашел ничего подходящего, может вы сможете подсказать, как сделать этот список не редактируемым, что не допустить появления в списке случайно нажатых символов? И второй вопрос, можно задать всей форме при запуске поверх всех окон принудительно? Спасибо.

И вам доброго времени суток. Спасибо за лестный отзыв. 🙂
С комбо боксом всё просто, надо поменять стиль DropDownStyle. Для моего примера это будет выглядеть так:

$ ComboBox . DropDownStyle = [ System . Windows . Forms . ComboBoxStyle ] : : DropDownList

нашел на msdn вот такую штуку, она делает окно активным, и соответственно поверх всех, не знаю насколько интересно будет 🙂
$obj_form.Add_Shown()
[void]$jbj_form.ShowDialog()

Если решусь продолжать писать статью про форму обязательно напишу. Но обычно мне не нравятся формы которые закрывают часть экрана и не дают ничего с этим делать. Обычно такие формы трояны-вымогатели используют. 🙂

Можно на ты, как ни как коллеги. 🙂

Поясню.. я не понимаю что не нравится в данном [void]$excl_form.ShowDialog()
тут какой то блок кода
$excl_form.Close()

да конечно реально, так и делается 🙂
делается массив(например $textbox) и в цикле прогоняется создание объектов с нужными параметрами.
Событие на них вешается одно (например клик мыши) а там смотрится какой объект вызвал данное событие.

Здравствуйте, только начинаю разбираться с PowerShell и кодами в целом, хотел поинтересоваться, каким образом можно запустить дальше данные которые вводятся в TextBox. Сделал 2 поля логин и пароль, под ними кнопки Ок и Cancel и хотел, чтобы после ввода данных в поля TextBox1 и TextBox2 при нажатии кнопки ОК, данные сохранялись или передавались в другой файл, а при нажатии кнопки Cancel удалялись, не могу найти решение на просторах интернета. Может плохо ищу. Извините, если вопрос не по теме.

Читайте также: