在上篇文章里,介绍了如何用Import-PSSession cmdlet将远程命令导入到本地来直接执行,如同在本地直接管理多台主机。当然这样的技术能在持久线程存活的情况下使用,如果使用Remove-PSSession杀死了线程或线程过期后,隐式远程线程也会同时被终止。
在本文中将会讨论如何将远程线程保存到本地硬盘,这样就可以不必在每次执行命令前,显式的创建PS线程到远程主机上执行命令了,直接导入本地已经保存的线程信息初始化相关环境即可。
将远程线程作为模块导出到本地
Export-PSSessioon用于从远程线程导入命令并将其保存到本地硬盘作为PowerShell的模块。这个cmdlet能够将cmdlet、函数、别名和其他的命令类型保存到PowerShell模块中。下面是如何使用该cmdlet的例子:
$s = New-PSSession -ComputerName WinServ-wfe
Invoke-Command -Session $s -ScriptBlock {Import-Module ActiveDirectory}
Export-PSSession -Session $s -OutputModule ADRemoteCommands -AllowClobber -Module ActiveDirectory
上面的例子中,前两行分别创建持久线程并导入活动目录模块,第三行用Export-PSSession将别名、函数等所有在$s线程中可用的命令作为模块导出到本地硬盘并命名为ADRemoteCommands
从本地导入模块
能够看到被导出的的模块文件时存放在$Env:PSModulePath中的,这样在导入的过程中就不需要显式的指明导入模块的路径了,执行的命令如下例所示:
Import-Module ADRemoteCommands
上述命令将会导入保存在本地模块中线程所有可用功的命令。导入模块后无论何时,不需要执行任何远程相关的cmdlet,用户就可执行远程命令,隐式远程管理,创建远程线程,在远程线程中执行命令并返回结果。如果创建远程线程需要密码,将会提示用户输入。
Export-PSSession的局限性
使用Export-PSSession也有类似于隐式远程管理的局限性,用户不能通过Export-PSSession导出PowerShell提供者。导出的模块不包含用于创建线程的线程选项,如果需要在运行远程命令之前指定任何线程选项,则需要用户在导入硬盘保存模块之前,先创建带有所需线程选项的PS线程。
总结
用Export-PSSession将远程线程信息保存到本地文件中,能够不用显式创建PS线程或者启动交互式远程线程的情况下,快速执行远程主机上的命令。在前面的文章里介绍了各种情境下启用远程管理,执行远程命令以及导入导出远程线程的方法
赛迪网地址:http://tech.ccidnet.com/art/302/20100702/2104179_1.html
作者: 付海军
版权:本文版权归作者所有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.shell.tor.hu/