Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
«Дурак подкидной и переводной» — классика карточных игр! Яркий геймплей, простые правила. Развивайте стратегию, бросайте вызов соперникам и станьте королем карт! Играйте прямо сейчас!

Дурак подкидной и переводной

Карточные, Настольные, Логическая

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Powershell + Программирование

С этим тегом используют

Windows IT Программист IT юмор Разработка Python Картинка с текстом Юмор Все
6 постов сначала свежее
8
hypo69
hypo69
1 месяц назад
Лига программистов
Серия 101 игра на python. Шпаргалки

Обновляем форк GitHub через PowerShell — от нуля до автоматизации⁠⁠

Как поддерживать свой форк в актуальном состоянии не тратя на это кучу времени?

В этой статье я покажу, как легко обновить ваш форк на GitHub с помощью PowerShell. В результате вы получите инструмент, который:

  • Работает с любой активной веткой вашего форка.

  • Автоматически подтягивает свежие изменения из upstream репозитория.

  • Выполняет rebase для чистоты истории коммитов.

  • Принудительно отправляет (push --force) обновленную ветку в ваш форк (origin).

  • И даже показывает наглядные уведомления о ходе процесса в Windows!

✅ Подготовка

Перед началом:

  • Убедитесь, что в вашем репозитории добавлен upstream на ОРИГИНАЛЬНЫЙ репозиторий:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

(Замените URL на актуальный для вашего проекта)

  • Установите модуль уведомлений [BurntToast], чтобы получать уведомления о процессе (полезно при автоматизации):

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

Часть 1: Обновление форка командами в PowerShell (ручной способ)

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

  • Перейти в директорию репозитория (если вы еще не там):

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост
  • Определить текущую ветку:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост
  • Получить изменения из upstream:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост
  • Сделать rebase текущей ветки на основе аналогичной ветки из upstream:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост
  • Обработка конфликтов (если возникли): Если git rebase сообщает о конфликтах:Откройте файлы с конфликтами в редакторе и разрешите их.
    Добавьте исправленные файлы: git add .
    Продолжите rebase: git rebase --continue
    (Или пропустить: git rebase --skip, или отменить: git rebase --abort)

  • Принудительно запушить изменения в origin (ваш форк на GitHub):

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

Внимание: git push --force перезаписывает историю в удаленной ветке. Используйте с осторожностью, особенно если над веткой работают другие люди.

  • (Опционально) Показать уведомление:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

Теперь, когда мы понимаем основные шаги, автоматизируем их с помощью функции.

Часть 2: Создание PowerShell-функции Update-Fork

Соберем все команды в удобную функцию.

🧩 Шаг 1. Функция переходит в нужную директорию и определяет текущую ветку:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост
  • param(...): Позволяет передавать путь к репозиторию или использовать текущий.

  • Import-Module BurntToast: Загружает модуль для уведомлений.

  • Set-Location: Переходит в нужную директорию.

  • git rev-parse --abbrev-ref HEAD: Получает имя текущей ветки.

🔁 Шаг 2: Добавим fetch и rebase

Подтянем изменения и сделаем rebase. Добавьте этот блок внутри функции Update-Fork, после определения $currentBranch:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост
  • git fetch upstream: Загружает изменения из upstream.

  • git rebase "upstream/$currentBranch": Перемещает ваши локальные коммиты поверх последних изменений из upstream.

⚠️ Шаг 3: Обработка конфликтов

Если rebase не проходит чисто, PowerShell поможет разобраться. Добавьте этот блок после git rebase ...:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост
  • Этот блок предлагает варианты действий при возникновении конфликтов во время rebase.

🚀 Шаг 4: Push и уведомление

В конце запушим изменения с --force и покажем результат. Добавьте этот блок в конец функции:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост
  • Перед push проверяем, не остался ли rebase в незавершенном состоянии.

🧩 Финальная версия функции:

полный код функции Update-Fork большая простыня, поэтому ссылка на github

💡 Как запускать функцию

Вы можете использовать Update-Fork несколькими способами:

1. Вручную в текущей сессии PowerShell

Скопируйте весь код функции (из "Финальная версия функции") и вставьте его прямо в окно PowerShell. PowerShell поддерживает многострочную вставку. После этого вы сможете вызвать функцию:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

Или, если вы находитесь в другой директории, укажите путь к вашему форку:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

Этот способ подходит для разового использования, так как при закрытии сессии PowerShell функция будет забыта. 😒

2. 🛠️ Добавить функцию Update-Fork в профиль PowerShell

Это самый удобный способ, так как он сделает функцию Update-Fork доступной в любой новой сессии PowerShell без необходимости каждый раз копировать код.

Профиль PowerShell – это специальный скрипт (.ps1 файл), который автоматически выполняется при каждом запуске PowerShell.

📂 Через Notepad

✅ Шаг 1. Откройте PowerShell

  • Нажмите Win + R, введите powershell, нажмите Enter.

  • Или откройте PowerShell через меню Пуск.

📄 Шаг 2. Выполните команду для открытия файла профиля в Блокноте:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

🔍 Что это за команда?

  • $PROFILE — это специальная переменная PowerShell, которая содержит путь к вашему пользовательскому файлу конфигурации. Обычно это что-то вроде C:\Users\<ВашеИмяПользователя>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1.

  • notepad — команда для запуска Блокнота с указанным файлом.

🧾 Что делать, если файл не существует?

Если вы увидите сообщение вида:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

— смело нажимайте "Да". PowerShell создаст для вас пустой файл профиля.

✏️ Шаг 3. Вставьте код функции

Скопируйте весь текст финальной версии функции Update-Fork (приведен выше) и вставьте его в открывшийся файл в Блокноте.

💾 Шаг 4. Сохраните и закройте

  • В Блокноте выберите "Файл" -> "Сохранить" (или нажмите Ctrl+S).

  • Закройте Блокнот.

🔄 Шаг 5. Перезапустите PowerShell

  • Закройте текущее окно PowerShell.

  • Откройте новое окно PowerShell.

Теперь функция Update-Fork должна быть доступна. Вы можете проверить это, выполнив:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

Если команда найдена, вы всё сделали правильно! 🎉 Теперь вы можете вызывать Update-Fork в любом репозитории.

💡 Альтернатива: Редактирование профиля через VS Code

Если вы используете Visual Studio Code (VS Code), редактировать профиль в нем может быть удобнее благодаря подсветке синтаксиса и другим функциям.

✅ Шаг 1. Убедитесь, что установлено расширение PowerShell

  1. Откройте VS Code.

  2. Перейдите на вкладку Extensions (Расширения) — иконка с квадратиками на боковой панели или Ctrl+Shift+X.

  3. В поиске введите PowerShell.

  4. Установите расширение PowerShell от Microsoft, если оно еще не установлено.

📝 Шаг 2. Откройте профиль PowerShell в VS Code

В терминале PowerShell (можно прямо в интегрированном терминале VS Code) выполните команду:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

🔍 Что происходит?

  • $PROFILE указывает на ваш файл профиля PowerShell.

  • code — это команда для запуска VS Code с указанным файлом.

📌 Если команда code не распознаётся: Это означает, что VS Code не добавлен в системную переменную PATH. Чтобы это исправить:

  1. Откройте VS Code.

  2. Нажмите Ctrl+Shift+P (или F1) чтобы открыть палитру команд.

  3. Начните вводить: Shell Command: Install 'code' command in PATH

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

✏️ Шаг 3. Вставьте код функции

Скопируйте полный текст финальной версии функции Update-Fork и вставьте его в открытый файл profile.ps1 в VS Code.

💾 Шаг 4. Сохраните и закройте

  • Сохраните файл в VS Code (Ctrl+S).

  • Можете закрыть VS Code или оставить открытым.

🔄 Шаг 5. Перезапустите PowerShell

  • Закройте все сессии PowerShell.

  • Откройте новую сессию PowerShell.

Теперь функция Update-Fork будет доступна. Проверьте, вызвав Update-Fork в вашем репозитории.

Если возникнут сложности с поиском профиля, команда $PROFILE в PowerShell всегда покажет точный путь. В зависимости от версии PowerShell и настроек системы, $PROFILE может указывать на разные файлы (например, profile.ps1 для всех хостов или специфичный для консоли).

3. Как отдельный .ps1-файл

  1. Сохраните полный код функции Update-Fork в файл, например, MyUpdateForkScript.ps1.

  2. Чтобы использовать функцию, вам нужно сначала "загрузить" этот файл в текущую сессию PowerShell (это называется "dot-sourcing"), а затем вызвать саму функцию:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост

Или, если вы находитесь в директории со скриптом, а форк в другом месте:

Обновляем форк GitHub через PowerShell — от нуля до автоматизации Гайд, Программирование, Git, Powershell, Длиннопост
  1. Этот метод требует выполнения команды . .\MyUpdateForkScript.ps1 в каждой новой сессии, где вы хотите использовать функцию.

Готово! Теперь вы можете синхронизировать ваш форк с оригиналом одной командой Update-Fork.

Оригинал статьи на GitHub

Показать полностью 18
[моё] Гайд Программирование Git Powershell Длиннопост
4
9
DELETED
1 год назад
Лига программистов

Введение в pwsh для продвинутых. Часть I⁠⁠

Наибольшая мощь платформы .NET раскрывается посредством IL (intermediate language, эдакий символический аналог языка ассемблера) — во что, собственно, и преобразовывается код на C# или любом ином языке платформы. Однако IL сторонятся как огня даже бывалые .NET'овцы (звучит как-то неполиткорректно), что говорить о разработчиках сценариев PowerShell?! Между тем, для последних это не просто полезный навык, скорее — возможность взять планку на порядок выше покуда другие рвут и мечут в отсутствии какой-либо фичи. Именно так в бытность второй версии PowerShell и поступал автор, реализуя, к примеру, побитовы(й|е) сдвиг(и) в(лево|право) посредством функции, в основе которой был динамический метод.

Введение в pwsh для продвинутых. Часть I Powershell, Программирование, IT, Длиннопост

Здесь, правда, используется синтаксис pwsh, измождённым же ностальгией при переводе примера на вторую версию PowerShell следует быть аккуратными при использовании переменной $$ и принять на вид возможность имитации тернарной операции посредством массивов; для прочих пример может показаться притянутым за уши, так как pwsh уже располагает операторами -shl и -shr, а значит

(New-Shift).Invoke(7, 3)

или:

(New-Shift shr).Invoke(7, 1)

будут подобны разве что ложке дёгтя в бочке мёда. Однако, истинная причина, по которой мы сознательно избегаем синтаксиса версий ниже шестой, кроется в различного рода рестрикциях присущих .NET Framework (и, как следствие, "наследуемых" PowerShell -le v5), но отсутствующих в .NET Core, как, например, использование указателей в динамических методах. Чтобы продемонстрировать это, а заодно чуть подробнее разобрать сам принцип создания последних, рассмотрим побайтовый вывод числа через указатель.

Введение в pwsh для продвинутых. Часть I Powershell, Программирование, IT, Длиннопост

Результатом, как и ожидается будет 00 40 00 00. А теперь немой вопрос: для чего это может понадобиться, если всё можно написать на C# и скормить Add-Type? Прежде — скорость: динамические методы создаются в динамической (кто бы мог подумать!) сборке pwsh, в то время как Add-Type создаёт физическую сборку, подгружаемую в текущий домен приложений, а это, во-первых, требует валидации кода, во-вторых, ведёт к захламлению сборками домена в текущем сеансе. Вторая немаловажная причина кроется в обработке больших данных где исключается параллелизм, например, расчёт энтропии некоторого файла, с которой, как было замечено ранее здесь, лучше и начинать исследования бинарного кода.

Показать полностью 2
Powershell Программирование IT Длиннопост
4
2
rick1177
rick1177
2 года назад
Лига программистов

Вопрос по CMD и PowerShell⁠⁠

Ребят, прошу научения и разъяснений.

В общем, нашлёпнул такой скриптик:

@Echo off

powershell.exe -ExecutionPolicy Bypass -Command "Add-Type -AssemblyName Microsoft.VisualBasic;$confirmation = [Microsoft.VisualBasic.Interaction]::MsgBox('Вы уверены, что хотите выключить компьютер?', ([Microsoft.VisualBasic.MsgBoxStyle]::YesNo -bor [Microsoft.VisualBasic.MsgBoxStyle]::DefaultButton2), 'Выключение компьютера');if ($confirmation -eq 'Yes') {shutdown /s /t 0}"

pause

Работает, норм.

Для улучшения читаемости решил наставить переносов строк.

Довёл до такого состояния:

@echo off

powershell.exe -ExecutionPolicy Bypass -Command "

Add-Type -AssemblyName Microsoft.VisualBasic;

$confirmation = [Microsoft.VisualBasic.Interaction]::MsgBox(

'Вы уверены, что хотите выключить компьютер?',

([Microsoft.VisualBasic.MsgBoxStyle]::YesNo -bor [Microsoft.VisualBasic.MsgBoxStyle]::DefaultButton2),

'Выключение компьютера'

);

if ($confirmation -eq 'Yes')

{shutdown /s /t 0

}

"

pause

А он, вдруг, перестал выполняться.

Хотя, как я понял, не имеют значения переносы строк... но вот не выполняется.

В блокнотике это выглядит так:

Вопрос по CMD и PowerShell Вопрос, Powershell, Cmd, Скрипт, Программирование

Вопрос. Как правильно работать с переносами строк и отступами, чтобы корректно работало.

P.S. Скрипт предназначен для выключения винды так, чтобы формировалось "засыпание", поскольку оно мешает корректному монтированию разделов на параллельно стоящем Ubuntu.

Показать полностью 1
[моё] Вопрос Powershell Cmd Скрипт Программирование
14

Оформить подписку для бизнеса

Перейти
Партнёрский материал Реклама
specials
specials

Ваш бизнес заслуживает большего!⁠⁠

Оформляйте подписку Пикабу+ и получайте максимум возможностей:

Ваш бизнес заслуживает большего! Малый бизнес, Предпринимательство, Бизнес

О ПОДПИСКЕ

Малый бизнес Предпринимательство Бизнес
14
berserkhawk
berserkhawk
4 года назад

Обновилась версия книги Волшебство Windows Powershell⁠⁠

Я наконец-то созрел для того, чтобы представить очередную версию своей книги-компиляции "Волшебство Windows Powershell".

В этот раз пандемия и карантины внесли свои коррективы - я смог чуть больше времени уделить книге и результат даже меня немного удивил: если версия 4 имела объем около 650 страниц, то версия 5 - уже почти 1300 страниц.

Я не вижу смысла полностью расписывать все изменения, поскольку их очень много - кто захочет ознакомиться с моим творением, сам все увидит. Одно изменение все же укажу: я поработал над стилями и оформлением, надеюсь, Вам понравится.

Несмотря на существенное увеличение объема книги, у меня стойко сохраняется ощущение, что рассмотрено еще очень мало вопросов.

Как известно, дорогу осилит идущий. Я иду, особо не спешу.

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

Надеюсь, что моя книга не превратится со временем в в такое же эпическое творение, как полное собрание сочинений Ленина. :-)

В общем, кому интересно, заходите: https://zen.yandex.ru/media/my_thoughts/volshebstvo-windows-...

[моё] Powershell Программирование Windows Linux Mac Os Книги Текст
14
64
berserkhawk
berserkhawk
4 года назад

День рождения Powershell⁠⁠

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

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

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

День рождения Powershell Powershell, Программирование, Cmd, Командная строка, Системное администрирование, Администрирование, Windows, Linux

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

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

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

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

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

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

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

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

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

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

Показать полностью 1
[моё] Powershell Программирование Cmd Командная строка Системное администрирование Администрирование Windows Linux
25
7
hekkaaa
hekkaaa
5 лет назад

Меню на 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 делать логику.


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

Меню на Powershell для установки ПО. Powershell, Windows, Программирование, Code, Длиннопост

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


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


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

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


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

Меню на Powershell для установки ПО. Powershell, Windows, Программирование, Code, Длиннопост

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

Меню на Powershell для установки ПО. Powershell, Windows, Программирование, Code, Длиннопост

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


Код работал. Необходимые функции запускал, но при нажатии кнопки "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
[моё] Powershell Windows Программирование Code Длиннопост
17
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии