这就是我想要实现的功能,我找不到任何关于此的信息。在PowerShell中动态创建cmdlet /模块
我想为远程服务器上可用的模块创建远程模块代理。
我知道如何使用远程处理,但我想要创建更干净的脚本文件。
举个例子。如果我想在远程计算机上从模块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的我的客户机上未安装。
我可以用Invoke-Command包装器为每个cmdlet重新编写模块,但这不是目的。通过为每个cmdlet和参数创建一个代理平等代理,我想要做的是远程处理MyModule。即使是Get-Help也应该至少对参数组合起作用。
我有几个想法,但我不确定是否有可能。
- 创建一个powershell模块,例如, PSRemotify将检测远程服务器上的模块并生成代码。
- 如果我选择将文件写入文件系统,那么这应该是可能的,如果我可以对cmdlet进行反射。
- 如果我不想保存文件,那么我需要在内存中执行所有操作。我可以在内存中编写cmdlet的主体吗?我可以生成一个字符串并导入其嵌入式cmdlet吗?
- 创建一个1.2的脚本。
我的选择是选项1.2。非常干净且不会在文件系统上留下任何痕迹。
任何想法?有没有人试过类似的东西?我的调查和回答@ Persistent13后
结论:
PowerShell中提供此功能的开箱。它被称为IMPLICIT REMOTING。在@ Persistent13的回答之前,我采取了错误的部分,因为我认为分享我的经验很有趣,我已经在博客上发表了看法。 import and use module from a remote server
'$ Session = New-PSSession -ComputerName“”;导入模块-PSSession $会话MyModule'? – PetSerAl