Créer un exécutable.le fichier exe du Script PowerShell?
est possible de créer un exécutable .le fichier exe d'un Script PowerShell?
8 réponses
Pas de. Au moins, pas encore, et après 5 versions de PowerShell, il semble peu probable jamais.
j'aimerais pouvoir en rester là, mais d'autres personnes ont fourni un tas de réponses de type "contournement" que je me sens obligé d'adresser:
vous can enveloppez votre .PS1 script dans un autre type de script pour le rendre double-cliquable, et vous pouvez même générer un exécutable avec le script intégré (voir les autres réponses sur ce thread)) ... mais ces " exécutables "nécessitent la bonne version de PowerShell pour être déjà présent sur le système, donc vous ne gagnez rien en faisant cela, et vous perdez beaucoup de fonctionnalités de PowerShell (comme la sortie d'objet en streaming, la documentation d'AIDE, et la gestion automatique des paramètres avec l'achèvement de l'onglet pour les utilisateurs).
voici un simple .cmd batch file wrapper (vous pouvez étendre cela pour autoriser les paramètres):
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
Je sais ...
avec PowerShell Portable , il serait probablement possible d'empaqueter une sorte de zip auto-extractible qui contiendrait la bonne version de PowerShell et un script et fonctionnerait. C'est et non un exécutable dans le sens normal du terme -- c'est un peu comme si Valve avait décidé de simplement envoyer une image vmware sur une clé USB comme solution pour laisser les utilisateurs de Linux jouer la demi-vie. Cependant, le produit semble abandonnée.
avec PrimalScript (ou PowerShell Studio ) ou PowerGui ou rspellexec , votre script peut être crypté, il est donc légèrement sécurisé contre les regards indiscrets ... mais c'est fondamentalement juste d'obscurcissement, et pas essentiellement différent du fichier de commandes, et à certains égards pire.
Hors de la boîte. Cependant j'ai construit un script PowerShell qui peut prendre un script et créer un wrapper EXE autour de lui. J'ai créé ce script Il ya un certain temps, mais a décidé de blog il ici pour les gens à vérifier.
Utiliser PowerGUI de l'Éditeur de Script (il est gratuit et fonctionne). Ouvrez votre script dans L'éditeur de Script PowerGUI > outils > compiler script > choisissez les options que vous voulez pour votre .exe (mot de passe protéger le code source, de fermer automatiquement la console après .exe fonctionne, etc.).
Oui, il y a une option PS2EXE pour créer un tel "151910920 de Fichiers".
Utilisation
le tout est vraiment simple et bien expliqué néanmoins en voici un extrait:
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
le seul inconvénient est que le projet est déprécié. Aucune mise à jour ou nouvelle version depuis 2015.
EDIT: Ce projetée a été repris et est maintenu par une nouvelle personne maintenant. Vous pouvez trouver le code mis à jour ici, dernière mise à jour 01/04/2018 de cette édition. https://gallery.technet.microsoft.com/scriptcenter/PS2EXE-GUI-Convert-e7cb69d5
Information De Version
pour ajouter et éditer l'information de version utiliser quelque chose comme VERPATCH .
PrimalScript à partir de Sapien va générer un exe à partir d'un script PowerShell. La machine qui l'exécutable est exécuté doit avoir PowerShell installé.
la solution que j'ai trouvé la meilleure pour distribuer un script PowerShell comme exe était de l'envelopper dans un NSIS exécutable.
j'écris un .l'ins script comme ceci:
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
je dois juste compiler le script vers un exe avec la chaîne d'outils NSIS, et il s'exécutera sur n'importe quel OS qui a PowerShell, quelle que soit la Politique d'exécution.
cela a été inspiré par cette question comment appeler PowerShell in NSIS .
j'ai compris votre question comme " mon script PowerShell peut-il générer un exécutable?"C'est ce que j'essayais de faire quand j'ai trouvé ce post. Cela est possible en utilisant la commande 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"
}
il y a un projet appelé Portable PowerShell qui est toujours en beta après quelques années ... peut-être intéressant de regarder à vos besoins.