這就是我想要實現的功能,我找不到任何關於此的信息。在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