|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - GUI PowerShell - помогите понять пару моментов |
|
PowerShell - GUI PowerShell - помогите понять пару моментов
|
Новый участник Сообщения: 6 |
Профиль | Отправить PM | Цитировать Всем привет.
Написал с помощью PowerShell Studio скриптец с графическим интерфейсом (или уже программой это называть, не знаю). Интерфейс стандартен - одна форма, на ней пару кнопок, чекбоксы, радио-переключатели, объекты типа label... Собственно с помощью этих самых label я указываю, что происходит в программе в данный момент (меняю значение label.text="загрузка того-то", потом этой же label присваиваю текст "идет поиск" и т.д.) Надо сказать что при нажатии кнопки "Старт" выполняется довольно много действий: импортируется модуль AD, создается объект excel, после чего заполняется заголовками столбцов, и далее уже идет непосредственно заполнение строк экселя необходимыми значениями, и сохраняется полученный файл (сам эксель пользователю не виден, так как при его создании свойство visible ставится в false). Так вот, когда я запускаю этот скрипт из самой powershell studio, или же из powershell ISE - все мои подсказки что именно сейчас происходит - видны. Ну то есть сначала написано "импортируем модуль AD", затем написано "создаем объект excel", затем "идет поиск пользователей", причем счетчик количества найденных пользователей также меняется с каждым новым найденным и т.д. Короче запустившему скрипт человеку видно, что скрипт что-то делает, и видно на каком этапе находится. Идем дальше, запускаю этот же скрипт (сохранив его в формате ps1) из командной оболочки powershell - запускается форма, я выбираю нужные параметры поиска, нажимаю "Старт" - и ничего не происходит со всеми моими указателями процесса. Все они остаются в начальных значениях. Форма тупо повисает, и только закончив работу, сразу рисует финальные цифры... То есть процесс то идет нормально, и результат тот же. Но вот не прорисовывается статистика выполнения. Запустившему скрипт человеку, кажется что он повис... Такая же ситуация происходит, если запускать скомпелированный powershell студией экзешник. Собственно вопрос - почему при запуске скрипта из powershell ISE или из powershell studio форма обновляется (тем самым меняя значения процесса выполнения), а при запуске из командной строки powershell или скомпелированного экзешника - форма зависает на все время работы скрипта и показывает уже только конечный результат? И второй вопрос - кто-нибудь работал с потоками powershell? думаю имеет смысл засунуть зполнение экселя данными в отдельный поток, чтобы этот процесс не вешал форму... Т.к. думаю что именно в этом причина, но почему это зависит от способа запуска скрипта - вопрос выше ) |
|
Отправлено: 23:33, 26-11-2012 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать UpDaTe, стоит выложить код.
|
Отправлено: 23:47, 26-11-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Кода там слишком много, чуть подпилю тогда можно будет )
Но хочу сказать, что проблема решается запуском командной оболочки powershell в режиме STA. Также, если при компилировании экзешника в powershell студии поставить галочку "использовать режим STA", то тоже форма не виснет. Такие вот дела. Ну и конечно, почитав интернеты, понял что при использовании интерфейса GUI в скриптах, особенно если при нажатии на какой-либо элемент интерфейса начинает производиться долгая операция (выборка объектов, отвечающих определенным условиям, или там какой-то поиск по файловой системе), то надо юзать потоки. И лучше всего RunSpace. Но пока что в них еще не разобрался ) |
Отправлено: 20:41, 27-11-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата UpDaTe:
Цитата UpDaTe:
|
||
Отправлено: 23:44, 27-11-2012 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Помогите понять в чем дело! | miolik | Металлолом | 3 | 09-01-2012 21:08 | |
Игровой процесс станет одним из ключевых моментов в Windows 8 | OSZone News | Новости и события Microsoft | 0 | 25-12-2010 08:30 | |
Прочее - Помогите понять postfix лог | Endy1 | Общий по Linux | 5 | 02-12-2010 15:59 | |
Вопрос - Помогите понять суть развода | gigi1988 | Защита компьютерных систем | 2 | 14-07-2010 05:19 | |
Монитор - [решено] Помогите понять | Kondrat6407 | Прочее железо | 2 | 11-10-2008 17:54 |
|