Интересно, прежде чем я доберусь до Powershell, просто краткий обзор
CLR - это время выполнения, которое используется многими языками программирования и на каком языке вы выбрали
не имеет значения, если используемый компилятор нацелен на CLR
Кроме того, Microsoft создала несколько языковых компиляторов, предназначенных для среды выполнения, C ++ / CLI, C #, F # и т. Д.
Процесс компиляции исходного кода для управляемых модулей
- Исходный код написан на языке
- Получается скомпилированным соответствующим
компилятор (предназначенный для CLR)
- Вы получаете управляемый модуль (+ метаданные)
который является стандартным переносимым исполняемым 32-битным Windows (PE32) или (PE64)
64 бита
![enter image description here](https://i.stack.imgur.com/AUhcW.jpg)
Объединение модулей в сборки
Затем компилятор берет этот управляемый модуль (IL + Metadata) и файл ресурсов и преобразует их в сборку
![enter image description here](https://i.stack.imgur.com/Wafil.jpg)
Именно эта сборка (EXE / DLL) используется CLR для выполнения
Насколько я знаю, Powershell, C #, VB.NET и все программы CLR
все языки компилируются до общего промежуточного языка до
они на самом деле управляются средой Common Language Runtime.
Если это так, теоретически возможно ли это
скомпилировать мой код класса Powershell 5 в CIL,
С Powershell он работает немного по-другому, хотя и основан на .NET Framework. Он не следует той же процедуре, что и в предыдущем примере.
При попытке запустить скрипт .ps1 (версия 3 и выше)
Сначала компилируется дерево синтаксического анализа в LINQ
Какой inturn преобразуется в байт-код (CIL), который затем интерпретируется (Just-In-Time)
Даже на этом этапе этот IL не может быть преобразован в сборки / DLL / достаточно простым способом (не насколько я знаю).
Но в качестве обходного пути вы можете рассмотреть преобразование скрипта Powershell в исполняемый файл (PS2EXE), хотя это не очень последовательный подход.
Ссылка:
Ссылка на PS2EXE: https://gallery.technet.microsoft.com/PS2EXE-Convert-PowerShell-9e4e07f1
Справочные издания: CLR via C #, Четвертое издание Джеффри Рихтера
https://www.safaribooksonline.com/library/view/clr-via-c/9780735668737/
Ответ Джейсона Ширка: Компилирует ли PowerShell сценарии?