Con PowerShell 2 è possibile incudere negli script del codice scritto in C# o VisualBasic.
Per farlo è sufficiente:
  • caricare il codice in una variabile ($source) oppure leggerlo da un file
  • compilare il codice tramite il cmdlet Add-Type specificando il linguaggio che di default è CSharp
  • istanziare l'oggetto ed invocarne i metodi siano essi statici (Somma) o meno (Moltiplica e ToString)

#definisco il codice csharp che voglio eseguire
$source = @"
public class SgartPsCs
{
  public static int Somma(int v1, int v2)
  {
    return v1 + v2;
  }

  public int Moltiplica(int v1, int v2)
  {
    return v1 * v2;
  }

  public override string ToString()
  {
    return "From SgartPsCs";
  }
}
"@

#carico e compilo il codice csharp
Add-Type -TypeDefinition $source -Language "CSharp"

#eseguo il metodo statico
[SgartPsCs]::Somma(4, 3) 

#creo l'oggetto
$csObject = New-Object SgartPsCs  

#invoco i metodi
$csObject.Moltiplica(5, 2) 
$csObject.ToString()
eseguendolo si ottiene:
7
10
ciao

Lo stesso esempio fatto in VB.NET
#definisco il codice in visual basic
$source = @"
Public Class SgartPsVb

  Public Shared Function Somma(ByVal v1 As Integer, ByVal v2 As Integer) As Integer
    Return v1 + v2
  End Function

  Public Function Moltiplica(ByVal v1 As Integer, ByVal v2 As Integer) As Integer
    Return v1 * v2
  End Function

  Public Overrides Function ToString() As String
    Return "From SgartPsVb"
  End Function

End Class
"@

#carico e compilo con il linguaggio VisualBasic
Add-Type -TypeDefinition $sourceVb -Language "VisualBasic"

[SgartPsVb]::Somma(4, 3) 

$vbObject = New-Object SgartPsVb  
$vbObject.Moltiplica(5, 2) 
$vbObject.ToString()
Ovviamente il codice può essere caricato anche da file:
add-type -path c:\ps\SgartTest.cs

Per un approfondimento sul comando Add-Type vedi http://technet.microsoft.com/en-us/l...d315241.aspx