我可以在Powershell ps1脚本中隐藏内部助手方法吗?

我可以在Powershell ps1脚本中隐藏内部助手方法吗?,powershell,powershell-remoting,Powershell,Powershell Remoting,例如,我的一个(坏)想法是从文件中定义的字符串导入模块(我不知道如果不先将该字符串写入文件系统,是否可以这样做) 我正在编写一个我希望能够远程执行的脚本,下面我将使用“脚本方法”。但是,我想以某种方式隐藏一些函数——我希望在脚本中包含一种模块 还是有一种完全不同的方法来实现我的目标?我所有的脚本/模块都是客户端的,我想在远程PSSession中运行它们。我并不特别想处理将脚本复制到远程服务器或共享驱动器的问题 我正在使用以下命令将我的脚本源点添加到远程PSSession中: invoke-com

例如,我的一个(坏)想法是从文件中定义的字符串导入模块(我不知道如果不先将该字符串写入文件系统,是否可以这样做)

我正在编写一个我希望能够远程执行的脚本,下面我将使用“脚本方法”。但是,我想以某种方式隐藏一些函数——我希望在脚本中包含一种模块

还是有一种完全不同的方法来实现我的目标?我所有的脚本/模块都是客户端的,我想在远程PSSession中运行它们。我并不特别想处理将脚本复制到远程服务器或共享驱动器的问题

我正在使用以下命令将我的脚本源点添加到远程PSSession中:

invoke-command -Session $s -FilePath $p

然后使用脚本文件
$p
中定义的函数调用脚本块。这是可行的,但我认为这不适用于模块,如果我想在其他脚本中重用代码,我要么必须手动将每个脚本导入远程会话,要么在单个单片脚本中复制代码。两者都不吸引人,而且似乎都不允许隐藏“私有”方法。

您可以使用
New Module
cmdlet:

新模块{
功能a{
B
}
功能b{
'调用函数b'
}
导出模块成员a
}|出空
好的
b#错误

我想你把自己逼到了一个角落。如果所有脚本组件都将驻留在本地计算机上,那么用户必须能够读取它才能调用它。@mjolinor-我不明白为什么会这样。例如,如果我在本地有一个可以读取的模块文件,那么当我导入模块时,该模块文件中的非导出方法仍然是“隐藏”的。这就是我所说的从Get-Help导入模块“隐藏”的意思:说明导入模块cmdlet将一个或多个模块添加到当前会话中。您导入的模块必须安装在本地计算机或远程计算机上。完美!谢谢通过管道将其导入模块,如果我愿意,可以在以后删除它