因爲Windows PowerShell能完全訪問.NET Framework,所以我們就可以想象如何用Powershell來調用DLL類庫呢。
這裏我們用C#寫一段代碼編譯爲DLL文件(這是在做一個數字大小的比較,CompareI是用靜態方法,CompareII則是一般方法)
編譯命令:csc /target:library G:/Math2.cs
- namespace Math
- {
- public class Methods
- {
- public Methods()
- {
- }
- public static int CompareI(int a, int b)
- {
- if (a>b)
- return a;
- else
- return b;
- }
- public int CompareII(int a, int b)
- {
- if (a>b)
- return a;
- else
- return b;
- }
- }
- }
最後我們開始在Powershell環境下調用:
- [void][reflection.assembly]::LoadFile("G:/Math2.dll")
- [Math.methods]::CompareI(10,2)
- $a=New-Object Math.Methods
- $a.CompareII(2,3)
結果爲:10 3
[void][reflection.assembly]::LoadFile("D:/VS2008/VC/Math2.dll")
我們必須以這種形式加載DLL庫
[Math.methods]::CompareI(10,2)
我們看到Powershell在調用靜態方法的時候必須使用方括號加上雙冒號“::”的形式來調用靜態方法。
$a=New-Object Math.Methods
$a.CompareII(2,3)
而一般方法則不然,必須用New-Object來聲明一個對象引用。