web-dev-qa-db-ja.com

PowerShellスクリプトから実行可能.exeファイルを作成しますか?

実行可能ファイルを作成することは可能ですかfile.exe PowerShellスクリプトからのファイルですか?

31
LaPhi

いいえ。少なくとも、まだではありません。PowerShellの5つのバージョンの後、それはありそうにないようです。

そのままにしておきたいと思いますが、他の人が対処しなければならないと感じる「回避策」タイプの回答をたくさん提供してくれました。

can.ps1スクリプトを別のスクリプトタイプでラップしてダブルクリック可能にし、スクリプトが埋め込まれた実行可能ファイルを生成することもできます(このスレッドに関する他の回答)...しかし、それらの「実行可能ファイル」には、システムに既に存在するPowerShellの正しいバージョンが必要であるため、それを行っても何も得られず、PowerShellの多くの機能(オブジェクト出力のストリーミング、ヘルプのドキュメント、ユーザーのタブ補完による自動パラメーター処理など)を失います。

次に、単純な.cmdバッチファイルラッパーを示します(これを拡張してパラメーターを許可できます)。

REM <#
copy %0 %0.ps1
PowerShell.exe -ExecutionPolicy Unrestricted -NoProfile -Command "&{Set-Alias REM Write-Host; .\%0.ps1}"
del %0.ps1
exit
REM #>

### Your PowerShell script goes below here.
### I've put a couple of lines as an example ...
ls | sort length -desc | select -first 5 | ft
ps | sort ws -desc | select -first 10 | ft

知っている ...

Portable PowerShellを使用すると、適切なバージョンのPowerShellとスクリプトが含まれて機能する自己解凍型のZipをパッケージ化できます。それはnot Wordの通常の意味での実行可能ファイルです-それは、ValveがLinuxユーザーにHalf Lifeをプレイさせるためのソリューションとして、サムドライブにvmwareイメージを出荷することを決定したかのようです。ただし、製品は放棄されたようです。

PrimalScript(またはPowerShell Studio)またはPowerGuiまたはpShellExecを使用すると、スクリプトを暗号化できるため、わずかに保護されますpr索好きな目に対して...しかし、これは基本的に難読化であり、本質的にバッチファイルと違いはなく、いくつかの点で悪化しています。

19
Jaykul

箱から出して-いいえ。ただし、スクリプトを取得してそのスクリプトの周りにEXEラッパーを作成できるPowerShellスクリプトを作成しました。少し前にこのスクリプトを作成しましたが、 ここにブログを書く の人がチェックアウトすることを決めました。

8
Keith Hill

はい、 PS2EXE を使用して、そのような*.exeファイルを作成するオプションがあります。

使用法

全体は本当にシンプルで、それでもここにスニペットがあります:

C:\Scripts\PS2EXE\PS2EXE_0.5.0.0.0\ps2exe.ps1 
    -inputFile  C:\Scripts\ExampleEXE\example.ps1 
    -outputFile C:\Scripts\ExampleEXE\example.exe -sta -noConsole -runtime40 -verbose -x64

唯一の悪い点は、プロジェクトが減価償却されることです。 2015年以降の更新または新しいバージョンはありません。

編集:この予測はピックアップされており、現在新しい人によって維持されています。更新されたコードは、この編集の時点で最終更新日である2018年4月1日でここにあります。 https://gallery.technet.Microsoft.com/scriptcenter/PS2EXE-GUI-Convert-e7cb69d5


バージョン情報

バージョン情報を追加および編集するには、 [〜#〜] verpatch [〜#〜] のようなものを使用します。


2019年更新

PythonEXE と呼ばれるgit-repoに叫ぶ。

Pythonプロジェクトから実行可能ファイルを作成する方法を示し、YouTubeのステップバイステップガイドも提供します。

7
Smartis

PowerGUIのスクリプトエディター を使用します(無料で動作します)。 PowerGUIスクリプトエディターでスクリプトを開き、[ツール]> [スクリプトのコンパイル]を選択します。exeに必要なオプションを選択します(ソースコードのパスワード保護、.exeの実行後にコンソールを自動的に閉じるなど)。

7
Jotunn

「PowerShellスクリプトで実行可能ファイルを生成できますか?」それが、この投稿を見つけたときにやろうとしていたことです。これは、Add-Typeコマンドを使用して可能です。

Add-Type -TypeDefinition @"
    using System;
    class Program {
        public static void Main(string[] args) { 
            Console.WriteLine("Hello World!");
        }
    }
"@ -CompilerParameters @{
    "GenerateExecutable" = $true
    "OutputAssembly" = "test2.exe"
}
4
snydergd

PrimalScript from Sapien は、PowerShellスクリプトからexeを生成します。実行可能ファイルが実行されるマシンにはPowerShellがインストールされている必要があります。

2
Chad Miller

PowerShellスクリプトをexeとして配布するのに最適な解決策は、 [〜#〜] nsis [〜#〜] 実行可能ファイルにラップすることでした。

このような.nsiスクリプトを作成します。

Name "Maintenance task"
OutFile "maintenance.exe"
ShowInstDetails show

Section "Main"
  ;Executes the "script-to-run.ps1" PowerShell script
  InitPluginsDir
  SetOutPath "$pluginsdir\MyOrg" ;It is better to put stuff in $pluginsdir, $temp is shared
  ;extract the .ps1 and run it, collecting output into details.
  File script-to-run.ps1
  nsExec::ExecToLog 'powershell  -inputformat none -ExecutionPolicy RemoteSigned -File "$pluginsdir\MyOrg\script-to-run.ps1"  '
  SetOutPath $exedir
SectionEnd

NSISツールチェーンを使用してスクリプトをexeにコンパイルするだけで、実行ポリシーが何であれ、PowerShellを搭載したOSで実行できます。

これはこの質問に触発されました NSISでPowerShellを呼び出す方法

2
CharlesB

数年後もまだベータ版であるPortable PowerShellと呼ばれるプロジェクトがあります...あなたのニーズに見合う価値があるかもしれません。

http://shelltools.wik.is/Portable_PowerShell

0
Trevor Sullivan