2014-11-02 118 views
2

我想創建一個安裝(以及卸載)Web應用程序的Powershell函數/ cmdlet:複製文件,創建應用程序池,創建Web應用程序,設置各種IIS屬性,做一些web.config修改等,我很困惑我應該如何命名它。 Powershell有這個動詞 - 對象命名約定,並且它很好,但是我想使用的名稱(New-WebApplication等)已經被WebAdministration模塊使用(這個新的函數將在內部使用)。有沒有一種很好的方法來確定我的函數的範圍,以明確它是不同的模塊?像mymodule.New-WebApplication,My-New-WebApplication,New-MyWebApplication?或者我可以稱之爲Install-WebApplication,但由於重用了相同的名稱,可能會導致混淆。Powershell命名約定/範圍

回答

2

我剛剛遇到了這個問題,最近有類似的問題。這可能有許多自以爲是的答案,但這將處理的方式來確定我的功能,以明確它是不同的模塊

你可以使用的Import-Module

Import-Module mymodule -Prefix Super 

-Prefix參數所以,當你去使用你的cmdlet的你將與

New-SuperWebApplication 

或者調用它,你也可以顯式調用與該cmdlet模塊路徑

mymodule\New-WebApplication 
+0

我一直希望有一個非自以爲是的答案,因爲MS甚至規定了使用的動詞,而這似乎正是我一直在尋找。 – fejesjoco 2014-11-02 14:19:46

+2

關於意見... :-)我更喜歡 \ command方法,因爲moduleName總是相同的(禁止作者重命名模塊)。如果你選擇Super前綴,並選擇Webby,而其他人選擇WebManager,則很難知道哪個模塊的命令被調用。 – 2014-11-02 15:09:34

1

我同意馬特的答案,但我想提供另一種觀點。

我寫了一個模塊,其意圖是專門重新創建現有cmdlet的功能。我以不同的方式命名了我的函數,但我還從模塊中導出了函數,這些函數允許調用方用我的方式覆蓋現有的cmdlet(使用首先解釋的Alias),然後撤消該過程。

這使得有人來顯式調用功能,而無需使用-Prefix,也不能使用\語法,使用新代碼的新名稱,但它也允許一個用我的功能,通過一個下拉更換現有的代碼調用一個新的命令。

這裏有一個模塊,如果你想看看: DnsCmdletFixes