2015-10-08 57 views
3

希望我可以在一個明確的問題中解釋這一點,以避免混淆(因爲我自己有點困惑)。
我有一個DLL,我會打電話給MyCommonStuff。我在這集會這裏模塊中定義一個枚舉對象:將.Net枚舉導入PowerShell腳本

MyCommonStuff\Enums\ImportEnum.cs 

像這樣:

namespace MyCommonStuff.ImportEnum 
{ 
    public enum ImportType 
    { 
     Blah1 = 0, 
     Blah2 = 1, 
     Blah3 = 2 
    } 
} 

我想在運行時導入到PowerShell腳本這可避免對手動將其複製並且必須在它應該改變的情況下同步它。
有人可以啓發我如何去做這件事嗎?

回答

1

以下是我預見解決您的解決方案的一種可能方式。您可以創建一個由PowerShell自動加載的模塊,爲您添加類型。

要創建模塊,打開PowerShell ISE中,並輸入以下代碼:

$Path = "path to dll" 
Add-Type -Path $Path 

保存「模塊」一個名爲.psm1文件,而不是一個腳本,並將其命名它的東西很容易,但內容豐富。然後,您將在「C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Modules」中創建一個新的目錄,並將EXACT SAME NAME作爲您的psm1文件。把你的psm1文件放在那裏,然後啓動一個新的powershell窗口。

您現在應該能夠訪問你的枚舉,如下所示:

[MyCommonStuff.ImportEnum.ImportType]::Blah1 

我會建議使用此一個模塊包含所有的自定義類型,對象,cmdlet的,功能等所以他們都在同一個地方。如果這樣做,請查看Export-ModuleMember cmdlet,因爲您可能需要它。

1

我試圖做類似的事情,但是在自定義cmdlet中定義我的枚舉,它看起來工作方式不同。使用所提供的例子(假設枚舉延伸PSCmdlet一個類裏面夾着),你需要做的PowerShell腳本/ CMD窗口中的以下內容:

Import-Module "Path to dll" 

$Blah1 = [MyCommonStuff.ImportEnum.ClassName+ImportType]::Blah1 

出於某種原因,你用「+」來代替「」。「引用枚舉值

+0

這正是我需要得到它的工作,「+」是需要引用枚舉 –