我可以在 Powershell ps1 脚本中隐藏内部辅助方法吗?
Can I hide internal helper methods in a Powershell ps1 script?
例如,我的一个(坏)想法是从文件中定义的字符串导入模块(我不知道我是否可以在不先将此字符串写入文件系统的情况下执行此操作)
我正在编写一个我希望能够远程执行的脚本,在 this answer 之后,我正在使用 "Scripts Approach"。但是,我想以某种方式隐藏一些功能 - 我想要脚本中的一种模块。
或者对于我正在尝试做的事情是否有完全不同的方法?我所有的 scripts/modules 都是客户端,我想在远程 PSSession 中 运行 它们。我不是特别想处理将脚本复制到远程服务器或共享驱动器。
我正在使用以下方法将我的脚本点源到远程 PSSession 中:
invoke-command -Session $s -FilePath $p
然后使用脚本文件 $p
中定义的函数调用脚本块。这行得通,但我认为这不适用于模块,如果我想在其他脚本中重用代码,我要么必须手动将每个代码导入远程会话,要么在单个整体脚本中复制代码。两者都没有吸引力,而且似乎都不允许隐藏 "private" 方法。
您可以使用 New-Module
cmdlet:
New-Module {
function a {
b
}
function b {
'function b called'
}
Export-ModuleMember a
}|Out-Null
a #OK
b #Error
例如,我的一个(坏)想法是从文件中定义的字符串导入模块(我不知道我是否可以在不先将此字符串写入文件系统的情况下执行此操作)
我正在编写一个我希望能够远程执行的脚本,在 this answer 之后,我正在使用 "Scripts Approach"。但是,我想以某种方式隐藏一些功能 - 我想要脚本中的一种模块。
或者对于我正在尝试做的事情是否有完全不同的方法?我所有的 scripts/modules 都是客户端,我想在远程 PSSession 中 运行 它们。我不是特别想处理将脚本复制到远程服务器或共享驱动器。
我正在使用以下方法将我的脚本点源到远程 PSSession 中:
invoke-command -Session $s -FilePath $p
然后使用脚本文件 $p
中定义的函数调用脚本块。这行得通,但我认为这不适用于模块,如果我想在其他脚本中重用代码,我要么必须手动将每个代码导入远程会话,要么在单个整体脚本中复制代码。两者都没有吸引力,而且似乎都不允许隐藏 "private" 方法。
您可以使用 New-Module
cmdlet:
New-Module {
function a {
b
}
function b {
'function b called'
}
Export-ModuleMember a
}|Out-Null
a #OK
b #Error