Eseguire codice CSharp o VB da PowerShell
Con PowerShell 2 è possibile incudere negli script del codice scritto in C# o Visual Basic.
Per farlo è sufficiente:
eseguendolo si ottiene:
Lo stesso esempio fatto in VB.NET
Ovviamente il codice può essere caricato anche da file:
Per un approfondimento sul comando Add-Type vedi http://technet.microsoft.com/en-us/l...d315241.aspx
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)
PowerShell
#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()
DOS / Batch file
7
10
ciao
Lo stesso esempio fatto in VB.NET
PowerShell
#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()
PowerShell
add-type -path c:\ps\SgartTest.cs
Per un approfondimento sul comando Add-Type vedi http://technet.microsoft.com/en-us/l...d315241.aspx