Pojďme si ukázat, jak lze zkompilovat vytvořený skript do EXE souboru. Dělá se to hlavně z toho důvodu, že se skryje zdrojový kod skriptu a navíc i typ jazyka ve kterém je skript napsaný. Nehledě na to, že většinou to i usnadní manipulaci v rámci GPO nebo nějakých automatizačních procesů.

Co k tomu potřebuji?

Nejlepší varianta je používat kompilátor, který je v ISE Steroids, ale bohužel ISE Steroids je placený a pro většinu firem a IT zaměstnanců moc drahý. Proto raději zvolím volně dostupnou variantu přes PS2EXE kompilátor, který používá Powershell skript pro samotnou kompilaci, což je takový "Inception".

Jak na to?

V první řadě si stáhneme PS2EXE kompilátor ve verzi 0.5.1.0 z mého GIT repozitáře, která podporuje i Powershell ve verzi 5.0. Samozřejmě vyextrahujeme kompilátor z archívu!

Důležité je aby byl skript pro kompilaci připraven! To znamená, že na úplný začátek skriptu umístíme kus Powershell kódu, který v podstatě udělá to, že řekne, jak se má EXE spustit aby se spustil správně Powershell skript.

#Nastaveni domovskeho adresare pro POWERSHELL aby se mohl zkompilovat do EXE
    $scriptRoot = [System.AppDomain]::CurrentDomain.BaseDirectory.TrimEnd('\')
    if ($scriptRoot -eq $PSHOME.TrimEnd('\'))
    {
        $scriptRoot = $PSScriptRoot
    }

Nyní si otevřeme konzoli Powershell.exe v režimu "Jako Správce" a do řádky vepíšeme příkaz na kompilaci našeho Powershell skriptu. Například:

.\ps2exe.ps1 -inputFile C:\skripty\skript.ps1 C:\skripty\skript.exe -runtime40

Myslím si, že vysvětlování, jak příkaz funguje není třeba. Jen je důležité používat verzi kompilátoru 0.5.1.0, protože má v sobě přidanou podporu pro Powershell 5.0, což je velmi důležité.

Co ted?

No teď už jenom otevřít zkompilovaný EXE soubor. Jen chci upozornit, že ne vždy je kompilace takto jednoduchá a u složitějších skriptů je potřeba optimalizovat a případně použít jiný kompilátor.