hekkaaa

hekkaaa

Пикабушник
95 рейтинг 6 подписчиков 4 подписки 3 поста 0 в горячем
Награды:
5 лет на Пикабу
7

Меню на 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



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

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

Маленькая история из маршрутки.

Маленькая история из маршрутки.

Мой город находится где то за поясом астероидов в этой стране, хотя и город-миллионник. В нем происходит тут и там такие истории как вот эта. Но у меня полыхнуло.
Ехал я вечером в маршрутке со своей девушкой. В маршрутке было пустовато всего 2 человека ( с нами 4). Не успели мы проехать 2 остановки как водитель резко подрезает на остановке другую маршрутку и начинает в окно орать все что о нем думает. Из всего нецензурного я понял суть проблемы - она заключалась в том, что нашего водителя в это день 4 часами ранее не пропустил другой водила, не прижавшись к остановке ( дорога с 1 полосой движения).
После наш водила предложил выйти разобраться (набить е....о) другому водиле, на что тот по видимому согласился.
Битва маршрутчиков не входила в мою культурную программу на вечер, потому радости и восхищение я испытывать не стал.
Напомню, что нас в маршрутке было 4. Девушка, которой все было до фонаря, она как сидела в телефоне так и продолжала. Я и моя девушка.......а 4 пассажир был полицейский.
Заметил я полицейского только тогда, когда водила побежал за машину. Естественно я повернулся проводить его взглядом, тут то и увидел полицейского в салоне. Полицейский сидел как не в чем не бывало рубился во что то в телефоне. Я в начале посмеялся от сложившейся ситуации. После продолжающихся криков за грязными окнами маршрутки и бездействием полицейского я решил обратиться к нему.
Цитата : " Господин полицейский, вы не хотите что то предпринять?"
П - оторвавшись от игры - ". Ну а что я сделаю, он же его не убьет."
Я чуть не офигел. Тем временем крики за грязными окнами маршрутки продолжались.
П - "Понимаете, если я ввяжусь, это ещё на больше затянется." Дополнил полицейский.
Я в совершенно непонятных чувствах сидел дальше. Минуты через 3 все закончилось. Водилы дальше слов не зашли. Мы помчались дальше.
А через 2 дня я пошел сделал фотографии для документов, скинул на флешку и заполнил электронный бланк на Грин-карту. Я и так не особо люблю страну где живу и давно хочу уехать, но после этого ( очень мелкого и повседневного) случая на фоне общего мракобесия на всех уровнях власти и жизни, я решил что будущий 18 год для меня будет последний в этой стране, ни смотря на исход лотереи. Лотерея это просто шанс (1.2%). Если не так, то соберу вещи и подальше от сюда.
Всем добра! ))))))

Показать полностью 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества