Powershell меню

Меню на Powershell для установки ПО

Powershell меню

Hello Wordl!

Не так давно я влился в новый для себя коллектив и резко поменял направление в IT для себя.

По этому теперь я осваиваю powershell как первый свой “языкпрограммирования” (на счет этого у меня немного другое мнение)

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

Первый мой скрипт которым я занялся и продолжаю доводить до ума это банальная установка ПО, им я и хочу поделиться. Просто поделиться и все =) (ну и совета получить).

Скрипт сам по себе тривиален:  Start-Process -FilePath …….

Но я реши заморочится с интерфейсом установки.

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

Я же захотел “чекбоксов” и “радиобаттонов” и тут у меня начались проблемы растянувшиеся на неделю.

Проблема 1: Не совсем представлял что хотел получить в итоге.

Проблема 2: Мало опыта. Мало информации (из за неумения адекватно искать).

Проблема 3: Получил не то что хотел и начал все по новой (хождение по мукам).

После получения информации как прикрутить “радиобаттон” начались проблемы.

Я не знал какой командой прикрутить выходные данные к кнопке “OK”, бы скрипт запускал функцию установки Putty_x32 и Putty_x64 (при выборе нужного естественно).

Пытался извратиться следующей командой:

$Rbutton1.Controls.Add_click({putty32})

function putty32 {
copy-item $……

start-process…}

Было еще множество глупых попыток объявить глобальную переменную $wow = 0

и вadd_click() уже добавить значение 1 или 2, а потом из полученной переменной с помощью if elseif делать логику.

Выглядело это извращение примерно так:

Я даже пытался логику прописывать в сам .Add.click({if (…)}), что даже на каком то этапе работало, но не давало выбора.

Это было явно не то чего я хотел, но как бы я не старался получалось как на картинке “превозмогая трудности”.

После долгих мучений я нашел несколько примеров как НУЖНО делать.

Все оказалось проще некуда, просто нужно знать или примерно помнить эти команды.

Итогом получилось:

Супер! – Подумал я и быстро поискав информацию написал простенькую логику к кнопкам “Ok” и “Cancel“.

Ну собственно и обделался тут же.

Код работал. Необходимые функции запускал, но при нажатии кнопки “Cancel” или закрытия окна, запускался скрипт установки.

1.5 дня я потратил что бы понять где я горе программист очередной раз сел в лужу и нашел.

Я просто не прописал логику нормально с отсылкой на кнопку “Ok“.

Готовый код:

$downloadfile_x32 = “D:\Distr\Putty\putty-0.73-installer.msi”$downloadfile_x64 = “D:\Distr\Putty\putty-64bit-0.73-installer.msi”$SettingProgramm_x32 = “C:\Temp\putty-0.73-installer.msi”$SettingProgramm_x64 = “C:\Temp\putty-64bit-0.73-installer.msi”$Share = “C:\Temp”#=====Начало меню=====#Add-Type -Assembly system.windows.

forms # класс для графического GUI$window_form = New-Object System.Windows.Forms.Form #создание самого окна$window_form.Text = “Установка Putty” #заголовок окна$window_form.Width = 350 #ширина$window_form.Height = 180 #высота$window_form.AutoScale = $true #автоматическое растягивание по тексту$pLabel = New-Object System.windows.forms.

Label$pLabel.Location = New-Object System.Drawing.Point (8,10) #отступ слева #Отступ сверху$pLabel.Size = New-Object System.Drawing.Size (140, 15)$pLabel.Text = “Версия для установки : “$window_form.Controls.Add($pLabel)$RadioButton1 = New-Object System.Windows.Forms.RadioButton$RadioButton1.

Location = '20,40' #отступ слева/отступ сверху$RadioButton1.size = '100,20' #длина и ширина отображаемой надписи$RadioButton1.Checked = $true$RadioButton1.Text = “Putty_x32″$window_form.Controls.Add($RadioButton1)$RadioButton2 = New-Object System.Windows.Forms.RadioButton$RadioButton2.

Location = '140,40'$RadioButton2.size = '100,20'$RadioButton2.Checked = $false$RadioButton2.Text = “Putty_x64″$window_form.Controls.Add($RadioButton2)#кнопка OK.$OKButton = new-object System.Windows.Forms.Button$OKButton.Location = '30,90'$OKButton.Size = '70,25'$OKButton.Text = 'OK'$OKButton.

DialogResult=[System.Windows.Forms.DialogResult]::OK$window_form.Controls.Add($OKButton)#Кнопка закрытия меню.$CancelButton = new-object System.Windows.Forms.Button$CancelButton.Location = new-object System.Drawing.Size(110,90)$CancelButton.Size = new-object System.Drawing.Size(70,25)$CancelButton.Text = “Cancel”$CancelButton.

Add_Click({$window_form.Close()})$window_form.Controls.Add($CancelButton)$buttondialoge = $window_form.ShowDialog()

#=====Конец меню=====#

#———-Логика———-#if ($buttondialoge -eq “OK”) {if ($RadioButton1.Checked){putty32}elseif ($RadioButton2.Checked){putty64}else{exit}}

#———-конец логики———-#

###установка x32###function putty32 {Copy-Item -Path $downloadfile_x32 -Destination $Share -Force”Ready…”Start-Process -FilePath $SettingProgramm_x32}###Установка x64###function putty64 {Copy-Item -Path $downloadfile_x64 -Destination $Share -Force”Ready…”Start-Process -FilePath $SettingProgramm_x64

}

Спустя набитые шишки на пути новичка, я планирую доделать установочную часть скрипта.

Для завершения мне нужно сделать “тихую” установку программ через запись файла автоответа.

Пару раз попытавшись провернуть это по мануалу через cmd у меня как то не вышло. Буду пробовать еще.

Так же есть недочет в удалении файла из TEMP стандартный Remove-item отказывается удалять даже через -Force

-Recurce в данном случае не имеет смысла подключать, иначе можно бахнуть все файлы в Temp (а задачи такой нет).

Вариант “Get-ChildItem -Path $SettingProgramm_x64 -File -Recurse | Remove-Item ” – Грохает файл сразу после его добавления в Temp. Вывод его за функцию не помогает.

По этому я смотрю на применение stat-job и recive-job

От советов не откажусь как мне лучше поступить в данных ситуациях. Как закончу допишу что получилось и какие мучения были по пути.

[моё] Powershell Windows Программирование Code Длиннопост

Товарищи программисты, админы и им сочувствующие, поздравляю всех нас со скромным праздником – Днем рождения Powershell. 🙂

14 ноября 2006 года, была выпущена финальная версия (Release to Web, RTW) Powershell. Эта версия была выпущена для Windows XP SP2, для Windows Vista, финальная версия Powershell была выпущена 30 января 2007 года.

Конечно, до этого были предрелизные версии (Release Candidate), был проект Monad, который являлся предшественником Powershell. Непосредственно Powershell, его финальная версия, был выпущен именно 14 ноября 2006 года.

Я с самого начала не очень позитивно воспринял появление Powershell – мне он казался просто немного расширенной версией командной строки, не дающий особых преимуществ по сравнению с последней – тогда мне вполне хватало CND, VBS, Autoit и т.д.

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

В один прекрасный момент, мне надо было решить задачу по обработке большого количества файлов – на почтовом сервере письма сохранялись в виде отдельных файлов *.eml, а общий формат был: Адрес_отправителя-ID_письма.eml. Писем было несколько сотен тысяч.

Я эту задачу решил, причем решил на CMD, VBS и Autoit. После этого, мне опять на глаза попался Powershell и я решил решить задачу на нем, в качестве упражнения. Решение нужной мне задачи занимало на VBS примерно 30 строк кода. Каково же было мое удивление, когда решение этой задачи на Powershell составило всего 3 строки!

За прошедшее время, Powershell не раз меня выручал, давая возможность просто решать задачи различной степени сложности.

После этого, я решил попристальней посмотреть в сторону Powershell и разобраться с ним получше.

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

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

Сегодня, в честь дня рождения Powershell, я решил выложить новую версию своей книги.

Поделитесь Вы, уважаемые читатели, помогал ли Вам Powershell каким-либо образом в работе?

Показать полностью -канал Great Big Story вспомнил историю создания знаменитого компьютерного пасьянса и взял интервью у его создателя.

Сотрудник Microsoft и автор книг о компьютерных приложениях Крис Селлз в 2004 году назвал карточную игру «Солитёр» самым используемым приложением Windows. Но создал её не гениальный программист и не группа сотрудников, работавших над проектом полный рабочий день, а стажёр Microsoft Уэс Черри.

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

“В то время игр существовало мало, и приходилось создавать их самостоятельно”.

Уэс Черри, создатель пасьянса «Солитер»

Уэс Черри создал в своём приложении специальную «защиту от начальника». При нажатии определённой клавиши стол с колодой карт исчезал, а на экране появлялись куски кода. Однако впоследствии компания заставила его убрать эту функцию.
Показать полностью Пасьянс Солитер Стажер Windows Программирование Билл Гейтс Игры

Я писал тут об одной мощной, простой, интересной библиотеке, которой пользуюсь чуть ли не каждый день, но вдруг осознал, что первый пост лучше сделать просто ознакомительным, для тех, кто совсем-совсем новичок. 🙂

Поэтому сегодня мы немного поговорим о том, что такое вообще python и попробуем завести его на своём компьютере.

Если ты уже программируешь на python, то этот пост ну прям явно не для тебя. 🙂 Ты можешь просто не читать его вовсе, а лучше написать сюда свой, про что-нибудь интересное из твоего опыта! С преферансом и поэтессами, как полагается. 😉

Итак, как сообщает нам достоверный источник (википедия), python (я произношу “пайтон”, некоторые русскоязычные люди говорят “питон”) — язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Иными словами, на нём можно быстро и писать код, и разбираться в том, что написал сосед.

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

Применяют ли его на практике?

Безусловно! Python — очень распространённый язык! С его помощью можно делать сайты, обрабатывать данные, работать с машинным обучением и много-много ещё всего интересного. Он используется многими крупными компаниями (например, в Google, чего далеко ходить). С его помощью можно делать как простенькие скрипты для повседневной жизни, так и всерьёз заниматься научной и коммерческой разработкой.

Заинтересовало? Тогда давай попробуем написать и запустить что-нибудь на Python! 🙂

Показать полностью 4

Если Вы желаете заняться освоением C#, то вовсе не обязательно скачивать 6 гигов тормознутой Visual Studio.

Если у Вас установлен .NET Framework, то поищите в папке C:\Windows\Microsoft.NET\Framework\\ файл csc.exe. Это и есть компилятор C#.

В большинстве случаев начальные задания выполняются в консоли, можно вполне обойтись без Visual Studio.

Кодить можно в любом текстовом редакторе, я предпочитаю Sublime Text.

Для более удобного доступа к ней, откройте:

Мой компьютер – Свойства – Дополнительные свойства системы – Дополнительно – Переменные среды.

Добавьте папку с csc.exe (указана выше) к существующей системной переменной PATH, написав ее после уже написанных путей, после знака “;“.
Показать полностью 1 Прогу сделал еще в четверг, пост решил запилить сейчас.Заранее извините за некликабельные ссылки в комментах.Надеюсь прога вам придет по душе) Показать полностью 1 Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам:

Источник: https://pikabu.ru/story/menyu_na_powershell_dlya_ustanovki_po_6986127

Выбор элементов из списка – PowerShell

Powershell меню

  • 06/05/2017
  • Чтение занимает 2 мин
    • j
    • o

Используйте Windows PowerShell 3.0 и более поздние версии для создания диалогового окна, в котором пользователи могут выбирать элементы из списка.Use Windows PowerShell 3.0 and later releases to create a dialog box that lets users select items from a list box control.

Создание элемента управления “Список” и выбор элементовCreate a list box control, and select items from it

Скопируйте и вставьте следующий код в интегрированную среду сценариев Windows PowerShell, а затем сохраните файл как сценарий Windows PowerShell (PS1-файл).Copy and then paste the following into Windows PowerShell ISE, and then save it as a Windows PowerShell script (.ps1).

Add-Type -AssemblyName System.Windows.FormsAdd-Type -AssemblyName System.Drawing $form = New-Object System.Windows.Forms.Form$form.Text = 'Select a Computer'$form.Size = New-Object System.Drawing.Size(300,200)$form.StartPosition = 'CenterScreen' $okButton = New-Object System.Windows.Forms.Button$okButton.Location = New-Object System.Drawing.Point(75,120)$okButton.Size = New-Object System.Drawing.Size(75,23)$okButton.Text = 'OK'$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK$form.AcceptButton = $okButton$form.Controls.Add($okButton) $cancelButton = New-Object System.Windows.Forms.Button$cancelButton.Location = New-Object System.Drawing.Point(150,120)$cancelButton.Size = New-Object System.Drawing.Size(75,23)$cancelButton.Text = 'Cancel'$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel$form.CancelButton = $cancelButton$form.Controls.Add($cancelButton) $label = New-Object System.Windows.Forms.Label$label.Location = New-Object System.Drawing.Point(10,20)$label.Size = New-Object System.Drawing.Size(280,20)$label.Text = 'Please select a computer:'$form.Controls.Add($label) $listBox = New-Object System.Windows.Forms.ListBox$listBox.Location = New-Object System.Drawing.Point(10,40)$listBox.Size = New-Object System.Drawing.Size(260,20)$listBox.Height = 80 [void] $listBox.Items.Add('atl-dc-001')[void] $listBox.Items.Add('atl-dc-002')[void] $listBox.Items.Add('atl-dc-003')[void] $listBox.Items.Add('atl-dc-004')[void] $listBox.Items.Add('atl-dc-005')[void] $listBox.Items.Add('atl-dc-006')[void] $listBox.Items.Add('atl-dc-007') $form.Controls.Add($listBox) $form.Topmost = $true $result = $form.ShowDialog() if ($result -eq [System.Windows.Forms.DialogResult]::OK){ $x = $listBox.SelectedItem $x}

Сценарий начинается с загрузки двух классов .NET Framework: System.Drawing и System.Windows.Forms.The script begins by loading two .NET Framework classes: System.Drawing and System.Windows.Forms. Затем вы запускаете новый экземпляр класса .

NET Framework System.Windows.Forms.Form, предоставляющий пустую форму или окно, в которые можно добавить элементы управления.You then start a new instance of the .NET Framework class System.Windows.Forms.

Form; that provides a blank form or window to which you can start adding controls.

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

После создания экземпляра класса “Форма” назначьте значения для трех свойств этого класса.After you create an instance of the Form class, assign values to three properties of this class.

  • Text.Text. Это будет заголовком окна.This becomes the title of the window.

  • Size.Size. Это размер формы в пикселях.This is the size of the form, in pixels. Предыдущий сценарий создает форму шириной 300 пикселей и высотой 200 пикселей.The preceding script creates a form that's 300 pixels wide by 200 pixels tall.

  • StartingPosition.StartingPosition. Для этого дополнительного свойства задается значение CenterScreen в предыдущем сценарии.This optional property is set to CenterScreen in the preceding script.Если это свойство не добавлено, Windows выберет расположение после открытия формы.

    If you don't add this property, Windows selects a location when the form is opened. Если для StartingPosition задать значение CenterScreen, форма будет автоматически отображаться в центре экрана при загрузке.

    By setting the StartingPosition to CenterScreen, you're automatically displaying the form in the middle of the screen each time it loads.

$form.Text = 'Select a Computer'$form.Size = New-Object System.Drawing.Size(300,200)$form.StartPosition = 'CenterScreen'

Далее создайте кнопку для формы.Next, create an OK button for your form. Укажите размер и поведение кнопки ОК.Specify the size and behavior of the OK button. В этом примере кнопка расположена на 120 пикселей ниже верхней границы формы и на 75 пикселей правее левой границы.

In this example, the button position is 120 pixels from the form's top edge, and 75 pixels from the left edge. Высота кнопки — 23 пикселя, а длина — 75 пикселей.The button height is 23 pixels, while the button length is 75 pixels. Сценарий использует предопределенные типы Windows Forms для определения поведения кнопок.

The script uses predefined Windows Forms types to determine the button behaviors.

$okButton = New-Object System.Windows.Forms.Button$okButton.Location = New-Object System.Drawing.Point(75,120)$okButton.Size = New-Object System.Drawing.Size(75,23)$okButton.Text = 'OK'$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK$form.AcceptButton = $okButton$form.Controls.Add($okButton)

Аналогичным образом создайте кнопку Отмена.Similarly, you create a Cancel button. Кнопка Отмена расположена на 120 пикселей ниже верхней границы и на 150 пикселей правее левой границы окна.The Cancel button is 120 pixels from the top, but 150 pixels from the left edge of the window.

$cancelButton = New-Object System.Windows.Forms.Button$cancelButton.Location = New-Object System.Drawing.Point(150,120)$cancelButton.Size = New-Object System.Drawing.Size(75,23)$cancelButton.Text = 'Cancel'$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel$form.CancelButton = $cancelButton$form.Controls.Add($cancelButton)

Далее введите текст метки в окне, который должны получить пользователи.Next, provide label text on your window that describes the information you want users to provide. В данном случае пользователям необходимо выбрать компьютер.In this case, you want users to select a computer.

$label = New-Object System.Windows.Forms.Label$label.Location = New-Object System.Drawing.Point(10,20)$label.Size = New-Object System.Drawing.Size(280,20)$label.Text = 'Please select a computer:'$form.Controls.Add($label)

Добавьте элемент управления (в данном случае список), который позволит пользователям указать сведения, описанные в тексте метки.Add the control (in this case, a list box) that lets users provide the information you've described in your label text.

Помимо списка существует много других элементов управления, которые можно применить. Их описание см. в статье Пространство имен System.Windows.Forms.There are many other controls you can apply besides list boxes; for more controls, see System.Windows.

Forms Namespace.

$listBox = New-Object System.Windows.Forms.ListBox$listBox.Location = New-Object System.Drawing.Point(10,40)$listBox.Size = New-Object System.Drawing.Size(260,20)$listBox.Height = 80

В следующем разделе необходимо указать значения списка, которые должны отображаться пользователям.In the next section, you specify the values you want the list box to display to users.

Примечание

Список, созданный этим сценарием, позволяет выбрать только один вариант.The list box created by this script allows only one selection. Чтобы создать список, допускающий множественный выбор, укажите для свойства SelectionMode значение, аналогичное следующему: $listBox.SelectionMode = 'MultiExtended'.

To create a list box control that allows multiple selections, specify a value for the SelectionMode property, similarly to the following: $listBox.SelectionMode = 'MultiExtended'. Дополнительные сведения см. в статье Списки с множественным выбором.For more information, see Multiple-selection List Boxes.

[void] $listBox.Items.Add('atl-dc-001')[void] $listBox.Items.Add('atl-dc-002')[void] $listBox.Items.Add('atl-dc-003')[void] $listBox.Items.Add('atl-dc-004')[void] $listBox.Items.Add('atl-dc-005')[void] $listBox.Items.Add('atl-dc-006')[void] $listBox.Items.Add('atl-dc-007') Добавьте список в форму и настройте его так, чтобы он открывался в Windows поверх других диалоговых окон.Add the list box control to your form, and instruct Windows to open the form atop other windows and dialog boxes when it's opened.
$form.Controls.Add($listBox)$form.Topmost = $true

Добавьте следующую строку кода для отображения формы в Windows.Add the following line of code to display the form in Windows.

$result = $form.ShowDialog()

Наконец, код внутри блока If указывает Windows, что следует делать с формой после того, как пользователь выберет параметр из списка и нажмет кнопку ОК или клавишу ВВОД.

Finally, the code inside the If block instructs Windows what to do with the form after users select an option from the list box, and then click the OK button or press the Enter key.

if ($result -eq [System.Windows.Forms.DialogResult]::OK){ $x = $listBox.SelectedItem $x}

См. также:See Also

Источник: https://docs.microsoft.com/ru-ru/powershell/scripting/samples/selecting-items-from-a-list-box?view=powershell-7

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.