Может быть, не совсем то, что вам нужно, но вы можете скрыть функции внутри модуля.
В вашем случае создайте новый файл и сохраните его как * .psm1 (для демонстрации я называю его InvokeModule.psm1
)
function Invoke-VMDoSomething {
Invoke-PrivateMiniFunc
}
function Invoke-VMDoSomethingElse {
Invoke-PrivateMiniFunc
}
function Invoke-PrivateMiniFunc {
Write-Host "Called by: $((Get-PSCallStack)[1].FunctionName)"
}
# export the functions you want to make available and leave out
# the functions you want to keep hidden (but available to the functions in the module)
Export-ModuleMember -Function Invoke-VMDoSomething, Invoke-VMDoSomethingElse
Последняя команда Export-ModuleMember
определяет, какие функции вы хотите использовать, а какие нет.
Далее, в другом файле импортируйте этот модуль.
Там, только экспортируемые функции являются видимыми / вызываемыми, но Invoke-PrivateMiniFunc
не является:
Import-Module 'D:\InvokeModule.psm1'
Invoke-VMDoSomething # works as expected
Invoke-VMDoSomethingElse # works as expected
Invoke-PrivateMiniFunc # errors out
Результат:
Called by: Invoke-VMDoSomething
Called by: Invoke-VMDoSomethingElse
Invoke-PrivateMiniFunc : The term 'Invoke-PrivateMiniFunc' is not recognized as the name of a cmdlet,
function, script file, or operable program. Check the spelling of the name, or if a path was included,
verify that the path is correct and try again.
At line:7 char:1
+ Invoke-PrivateMiniFunc
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Invoke-PrivateMiniFunc:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException