Add-Type -t 'public class Foo { public static void Main(){ System.Console.WriteLine("Ciekawe te protipy!");}}';[Foo]::Main() - uruchom kod C# prosto z PowerShella
tty1 · powershell
PS> Add-Type -t 'public class Foo { public static void Main(){ System.Console.WriteLine("Ciekawe te protipy!");}}';[Foo]::Main()
#PowerShell#CSharp#RedTeam#Magic
Cmdlet Add-Type pozwala nam zdefiniować klasę .NET (lub .NET Core) dla bieżącej sesji PowerShella, którą następnie możemy wykorzystywać. Domyślnym językiem programowania dla klasy jest C#, jednak można to zmienić za pomocą parametru -Language. Kod źródłowy podajemy w parametrze -TypeDefinition (co możemy skrócić do -t). W wyniku uruchomienia tego onelinera, otrzymamy:
PS C:\Users\drg> Add-Type -t 'public class Foo { public static void Main(){ System.Console.WriteLine("Ciekawe te protipy!");}}';[Foo]::Main()
Ciekawe te protipy!
PS C:\Users\drg>
Oczywiście możemy to zapisać w bardziej czytelny sposób:
$code = @"
public class Foo {
public static void Main() {
System.Console.WriteLine("Ciekawe te protipy!");
}
}
"@
Add-Type -TypeDefinition $code -Language CSharp
[Foo]::Main()