这就是我想要实现的目标,但我找不到任何相关信息。
我想为远程服务器上可用的模块创建一个远程模块代理。
我知道如何使用远程处理,但我想要创建更清晰的脚本文件的东西。
举个例子。如果我想从远程计算机上的模块MyModule执行MyCmdlet ,我会这样做
$block={
# Invoke the cmdlet from a module named MyCmdlet
MyCmdlet -Parameter1 -Parameter2
}
Invoke-Command -ComputerName "" -ScriptBlock $block
但我想登陆这样的事情
Import-Module MyModuleRemote
MyCmdlet -ComputerName "" -Parameter1 -Parameter2
请注意我的客户端机器上没有安装MyModule 。
我可以为每个 cmdlet 使用 Invoke-Command 包装器重新编写模块,但这不是目的。我想做的是通过为每个 cmdlet 和参数创建一个代理相等代理来远程化MyModule。即使是 Get-Help 也应该至少对参数组合起作用。
我有几个想法,但我不确定这是否可能。
- 创建一个powershell模块,例如PSRemotify,它将探测远程服务器上的模块并生成代码。
- 如果我选择将文件写入文件系统,那么这应该是可能的,如果我可以对 cmdlet 进行反思。
- 如果我不想保存文件,那么我需要在内存中做所有事情。我可以在内存中写入 cmdlet 的主体吗?我可以生成一个字符串并导入它的嵌入式 cmdlet 吗?
- 创建一个执行 1.2 的脚本。
我的偏好是选项 1.2。非常干净,不会在文件系统上留下任何痕迹。
有任何想法吗?有没有人尝试过类似的东西?
经过我的调查和@Persistent13 的回答后得出的结论:
PowerShell 开箱即用地提供了此功能。它被称为隐式远程处理。在@Persistent13 的回答之前,我选择了错误的部分,因为我认为分享我的经验很有趣,我已经在博客上写过它。 从远程服务器导入和使用模块