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:
Теперь можно отобразить форму на экране.
Как вы видите, на экране появилась пустая форма указанных размеров. Чтобы добавить не нее различные графические диалоговые элементы, перед строкой $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.
Аналогичным образом вы можете создать следующие графические элементы на форме:
- CheckBox
- RadioButton
- TextBox
- ChekedListBox
- GroupBox
- ListBox
- TabControl
- ListView
- TreeView
- DateTimePicker
- TrackBar
- PictureBox
- ProgressBar
- HScrollBar
- VScrollBar
- ContextMenu
- Menu
Для вывода диалогового окна с уведомлением пользователю можно испоьзоват следующий код:
[System.Windows.Forms.MessageBox]::Show("Запущен процесс расчета","Предупреждение",0)
С помощью него вы сможете создать красивую форму с необходимыми диалоговыми элементами. И получить готовый код графической формы с разными элементами и кнопками для ваших 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 может помочь вам следующим образом:
- Позволяет вам выполнять сценарии PowerShell, не имея знаний в области языка сценариев
- Позволяет видеть сценарии, который PowerGUI создает, чтобы вы могли понять PowerShell, а также позволяет вам экспортировать эти сценарии (которые вы можете изменять и создавать из них собственные)
- Дает возможность добавлять библиотеки "PowerPack Libraries", чтобы можно было расширять функциональность до сотен других приложений и/или функций Windows (смотрите рисунок 2)
- Предлагает удобный редактор сценариев 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
Что бы получить эту форму, надо выполнить следующий скрипт:
$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. Для моего примера это будет выглядеть так:
нашел на msdn вот такую штуку, она делает окно активным, и соответственно поверх всех, не знаю насколько интересно будет 🙂
$obj_form.Add_Shown()
[void]$jbj_form.ShowDialog()
Если решусь продолжать писать статью про форму обязательно напишу. Но обычно мне не нравятся формы которые закрывают часть экрана и не дают ничего с этим делать. Обычно такие формы трояны-вымогатели используют. 🙂
Можно на ты, как ни как коллеги. 🙂
Поясню.. я не понимаю что не нравится в данном [void]$excl_form.ShowDialog()
тут какой то блок кода
$excl_form.Close()
да конечно реально, так и делается 🙂
делается массив(например $textbox) и в цикле прогоняется создание объектов с нужными параметрами.
Событие на них вешается одно (например клик мыши) а там смотрится какой объект вызвал данное событие.
Здравствуйте, только начинаю разбираться с PowerShell и кодами в целом, хотел поинтересоваться, каким образом можно запустить дальше данные которые вводятся в TextBox. Сделал 2 поля логин и пароль, под ними кнопки Ок и Cancel и хотел, чтобы после ввода данных в поля TextBox1 и TextBox2 при нажатии кнопки ОК, данные сохранялись или передавались в другой файл, а при нажатии кнопки Cancel удалялись, не могу найти решение на просторах интернета. Может плохо ищу. Извините, если вопрос не по теме.
Читайте также: