Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Создание исполняемого файла на основе скрипта PowerShell

Ответить
Настройки темы
PowerShell - [решено] Создание исполняемого файла на основе скрипта PowerShell

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Тема является выделенной из Как полюбить PowerShell? для поддержания чистоты и порядка.
Есть скрипт
Код: Выделить весь код
Write-Output -InputObject 'Hello World'
Совершенно бестолковый, выводит "Привет мир!"
Я хочу из данного скрипта сделать исполняемый файл.
Допустим гугл нам подскажет команду Ps2Exe.
Код: Выделить весь код
PS C:\Users\Andrew\Documents\PS_test> ps2exe -inputFile C:\Users\Andrew\Documents\PS_test\helloWorld.ps1 -outputFile C:\Users\Andrew\Documents\PS_test\helloWorld.ps1 -iconFile C:\Data\Icon.ico -noConsole -title "MyScript" -version 0.0.0.1
PS2EXE-GUI v0.5.0.27 by Ingo Karstein, reworked and GUI support by Markus Scholtes

& : Имя "Invoke-ps2exe" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и
правильность пути, после чего повторите попытку.
строка:1 знак:2
+ &'Invoke-ps2exe'  -inputFile C:\Users\Andrew\Documents\PS_test\helloW ...
+  ~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Invoke-ps2exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\Andrew\Documents\PS_test> ps2exe
PS2EXE-GUI v0.5.0.27 by Ingo Karstein, reworked and GUI support by Markus Scholtes

Usage:

Invoke-ps2exe [-inputFile] '<filename>' [[-outputFile] '<filename>']
              [-prepareDebug] [-x86|-x64] [-lcid <id>] [-STA|-MTA] [-noConsole] [-UNICODEEncoding]
              [-credentialGUI] [-iconFile '<filename>'] [-title '<title>'] [-description '<description>']
              [-company '<company>'] [-product '<product>'] [-copyright '<copyright>'] [-trademark '<trademark>']
              [-version '<version>'] [-configFile] [-noOutput] [-noError] [-noVisualStyles] [-exitOnCancel]
              [-DPIAware] [-requireAdmin] [-supportOS] [-virtualize] [-longPaths]
Вот то ли лыжи не едут, то ли я понятия не имею, что ей от меня надо.
Причем не важно, короткая форма вызова будет или нет -- Имя командлета не распознано.
Но! Если его вызвать просто так (ps2exe?, Invoke-ps2exe) -- то командлет находится.

Можно через графику (win-ps2exe), можно другими инструментами (powershell on steroids). Т.е. задача решаема, это не проблема.
Проблема мне понять что здесь идет не так.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 18:23, 22-08-2022

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6527
Благодарности: 1480

Профиль | Отправить PM | Цитировать


У вас у входного и выходного файла одинаковые имена и расширения, может, дело в этом?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 21:57, 22-08-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Да, ошибка в написании есть, но нет, ситуацию это не спасает.
Код: Выделить весь код
PS C:\Users\Andrew\Documents\PS_test> ps2exe -inputFile C:\Users\Andrew\Documents\PS_test\helloWorld.ps1 -outputFile C:\Users\Andrew\Documents\PS_test\111.exe
PS2EXE-GUI v0.5.0.27 by Ingo Karstein, reworked and GUI support by Markus Scholtes

& : Имя "Invoke-ps2exe" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и
правильность пути, после чего повторите попытку.
строка:1 знак:2
+ &'Invoke-ps2exe'  -inputFile C:\Users\Andrew\Documents\PS_test\helloW ...
+  ~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Invoke-ps2exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
Есть предположение, что windows не переустанавливался очень давно и система захламлена. (Гипотетически)
Я с какой-нибудь оказией попробую на чистой установке.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 09:23, 23-08-2022 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6527
Благодарности: 1480

Профиль | Отправить PM | Цитировать


Надо поставить ps2exe как модуль в Powershell, это было сделано?

https://github.com/MScholtes/PS2EXE#installation

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 09:41, 23-08-2022 | #4


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Версия ps
Код: Выделить весь код
PS C:\Users\Andrew\Documents\PS_test>
PS C:\Users\Andrew\Documents\PS_test> Install-Module ps2exe
PS C:\Users\Andrew\Documents\PS_test> ps2exe -inputFile C:\Users\Andrew\Documents\PS_test\helloWorld.ps1 -outputFile C:\Users\Andrew\Documents\PS_test\111.exe
PS2EXE-GUI v0.5.0.27 by Ingo Karstein, reworked and GUI support by Markus Scholtes

& : Имя "Invoke-ps2exe" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и
правильность пути, после чего повторите попытку.
строка:1 знак:2
+ &'Invoke-ps2exe'  -inputFile C:\Users\Andrew\Documents\PS_test\helloW ...
+  ~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Invoke-ps2exe:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\Users\Andrew\Documents\PS_test> ls

    Directory: C:\Users\Andrew\Documents\PS_test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          21.08.2022     9:44           1558 helloWorld.ps1
-a---          20.08.2022    19:45          32768 hw.exe
-a---          20.08.2022    19:51          24576 hw_console.exe
-a---          21.08.2022     9:10         281088 tt.exe

PS C:\Users\Andrew\Documents\PS_test>  $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.2.0-preview.10
PSEdition                      Core
GitCommitId                    7.2.0-preview.10
OS                             Microsoft Windows 10.0.17763
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0


----

Значит, дело было так.
В PS версии 7 это фигня через установку модуля не отрабатывает. Причем молчит как резанная.
В PS версии 5, открытой от имени администратора после Install-Module потребовался
Import-Module
Код: Выделить весь код
PS C:\Windows\system32> Install-Module ps2exe

Для продолжения требуется поставщик NuGet
Для взаимодействия с репозиториями на основе NuGet модулю PowerShellGet требуется версия поставщика NuGet "2.8.5.201"
или более новая. Поставщик NuGet должен быть доступен в "C:\Program Files\PackageManagement\ProviderAssemblies" или
"C:\Users\Andrew\AppData\Local\PackageManagement\ProviderAssemblies". Поставщик NuGet можно также установить, выполнив
команду "Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force". Вы хотите, чтобы модуль PowerShellGet
установил и импортировал поставщик NuGet прямо сейчас?
[Y] Да - Y  [N] Нет - N  [S] Приостановить - S  [?] Справка (значением по умолчанию является "Y"): y

Ненадежный репозиторий
Идет установка модулей из ненадежного репозитория. Если вы доверяете этому репозиторию, измените его значение
InstallationPolicy, запустив командлет Set-PSRepository. Вы действительно хотите установить модули из "PSGallery"?
[Y] Да - Y  [A] Да для всех - A  [N] Нет - N  [L] Нет для всех - L  [S] Приостановить - S  [?] Справка
(значением по умолчанию является "N"):y

PS C:\Users\Andrew\Documents\PS_test> ps2exe
ps2exe : Команда "ps2exe" найдена в модуле "ps2exe", но загрузить этот модуль не удалось. Для получения дополнительных
сведений выполните команду "Import-Module ps2exe".
Import-Module потребовал включение политики выполнения скриптов Set-ExecutionPolicy
Код: Выделить весь код
PS C:\Users\Andrew\Documents\PS_test> Set-ExecutionPolicy

Командлет Set-ExecutionPolicy в конвейере команд в позиции 1
Укажите значения для следующих параметров:
ExecutionPolicy: Unrestricted
И только после этого
Код: Выделить весь код
PS C:\Users\Andrew\Documents\PS_test> ps2exe
PS2EXE-GUI v0.5.0.27 by Ingo Karstein, reworked and GUI support by Markus Scholtes
PS C:\Users\Andrew\Documents\PS_test> ps2exe .\helloWorld.ps1
PS2EXE-GUI v0.5.0.27 by Ingo Karstein, reworked and GUI support by Markus Scholtes


Reading input file C:\Users\Andrew\Documents\PS_test\helloWorld.ps1
Compiling file...

Output file C:\Users\Andrew\Documents\PS_test\helloWorld.exe written
PS C:\Users\Andrew\Documents\PS_test> ls


    Каталог: C:\Users\Andrew\Documents\PS_test


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       23.08.2022     10:05          29184 helloWorld.exe
-a----       21.08.2022      9:44           1558 helloWorld.ps1
Так же начало работать и в PS версии 7.
Код: Выделить весь код
PS C:\Users\Andrew\Documents\PS_test> ps2exe -inputFile C:\Users\Andrew\Documents\PS_test\helloWorld.ps1 -outputFile C:\Users\Andrew\Documents\PS_test\111.exe
PS2EXE-GUI v0.5.0.27 by Ingo Karstein, reworked and GUI support by Markus Scholtes

PowerShell Desktop environment started...


Reading input file C:\Users\Andrew\Documents\PS_test\helloWorld.ps1
Compiling file...

Output file C:\Users\Andrew\Documents\PS_test\111.exe written

PS C:\Users\Andrew\Documents\PS_test> ls

    Directory: C:\Users\Andrew\Documents\PS_test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          23.08.2022    10:13          29184 111.exe
-a---          23.08.2022    10:05          29184 helloWorld.exe
-a---          21.08.2022     9:44           1558 helloWorld.ps1

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:15, 23-08-2022 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Создание исполняемого файла на основе скрипта PowerShell

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] PowerShell - отмена запуска скрипта на серверах invademan Скриптовые языки администрирования Windows 1 19-10-2018 10:46
[решено] создание скрипта или bat файла shadow395 AutoIt 22 15-08-2018 09:16
CMD/BAT - Создание третьего файла на основе двух данных blackeangel Скриптовые языки администрирования Windows 6 10-09-2016 23:04
PowerShell - Создание динамического скрипта для PowerShell AZABAZA Скриптовые языки администрирования Windows 1 18-11-2015 13:52
Приоритет для исполняемого файла Seven Microsoft Windows NT/2000/2003 1 15-01-2010 12:25




 
Переход