Use the -TypeDefinition parameter of the Add-Type class to define a new .NET class or extend an existing one within a PowerShell script.
#############################################################################
##
## Invoke-AddTypeTypeDefinition
##
## From Windows PowerShell Cookbook (O'Reilly)
## by Lee Holmes (http://www.leeholmes.com/guide)
##
##############################################################################
<#
.SYNOPSIS
Demonstrates the use of the -TypeDefinition parameter of the Add-Type
cmdlet.
#>
Set-StrictMode -Version 3
## Define the new C# class
$newType = @'
using System;
namespace PowerShellCookbook
{
public class AddTypeTypeDefinitionDemo
{
public string SayHello(string name)
{
var result = string.Format("Hello {0}.", name);
return result;
}
}
}
'@
## Add it to the Powershell session
Add-Type -TypeDefinition $newType
## Show that we can access it like any other .NET type
$greeter = New-Object PowerShellCookbook.AddTypeTypeDefinitionDemo
$greeter.SayHello("World")