2017-01-30 39 views
0

因此,標題使其非常清晰,但我仍然會提出更精確的要求。 所以問題是,是否可以從模塊中導出輔助函數,並使它們只能在代碼中重用,但僅限於用戶,因此他無法從控制檯調用它們?隱藏導出用戶的PowerShell功能

預先感謝您!

+0

當你說可以在代碼中重用時,你指的是模塊中的代碼,模塊外部的腳本,一個單獨的模塊? –

+0

我需要在單獨的模塊中使用某些功能,而不使這些功能可用於用戶控制檯 – SokIsKedu

回答

0

當然,你只是需要指定你這麼出口什麼樣的(在PSM文件):

Export-ModuleMember -Function Verb-Noun 

這將出口只有這一個功能,在您的PSD文件:

FunctionsToExport = 'Verb-Noun' 
+0

我現在有這個功能,但這使得這些功能不僅可用於分離模塊,而且用戶還可以從控制檯調用它們 – SokIsKedu

+0

對不起,我不明白你在說什麼,你可以重述嗎?對我來說,它可以按預期工作:'Get-Command -Module mymodule'只返回1個命令。添加示例? @SokIsKedu – 4c74356b41

+0

閱讀關於問題本身的評論,他需要將方法提供給其他模塊,但用戶不可用。 –

0

我不認爲這是可能的,你想這樣做。我將如何處理它是在助手模塊中包含所有隱藏命令的PS1文件,但不會將其作爲助手模塊的一部分加載。然後在依賴它的模塊中,只需點擊PS1幫助程序文件即可,它將導入所有要使用的腳本。

例如,需要輔助模塊的模塊:

. $PSScriptRoot\..\HelperModule\HelperModuleInternal.ps1 

顯然與輔助模塊的名稱,並分別隱藏指令PS1文件替換HelperModule和HelperModuleInternal。請注意,如果您將其設置爲psm1文件,則只會打開ISE。

我不確定,但它可能仍會嘗試導出隱藏的命令,如果是這樣的話,我會閱讀處理它的巧妙方法。將所有已發佈的命令調用通常的Verb-Noun語法,並在最後放置Export-ModuleMember -Function "*-*"。然後對於內部命令,使用不符合此命名的命名,例如Verb_NounVerbNoun。非常整齊。