代码改变世界

PowerShell 2.0远程管理之交互式远程线程

2010-12-10 10:25  @天行健中国元素  阅读(1519)  评论(0编辑  收藏  举报

本文将会介绍PowerShell 2.0的交互式远程管理以及如何使用Enter-PSSession、Exit-PSSession以及Get-PSSession操作线程的相关属性,以及在交互式远程管理中对持久线程的使用。通过交互式远程管理,用户可以在本地输入命令就能实时看到远程主机的执行效果,如果需要共享前后几次交互式线程的变量和数据就需要使用持久线程的方式创建线程,这样PowerShell会代替用户对线程信息进行维护。

为了能展示交互式PowerShell远程管理的优点,这里选择已安装SharePoint2010的远程主机,由于SharePoint2010提供了内置的PowerShell cmdlet,只要用户导入Microsoft.SharePoint.PowerShell的管理单元,就能通过Invoke-Command访问cmdlet.

$s = New-PSSession -ComputerName WinServ-wfe

#load the PS Snap-in to enable SharePoint PS cmdlets

Invoke-Command -Session $s -ScriptBlock {Add-PSSnapin Microsoft.SharePoint.PowerShell}

#$s has the PowerShell cmdlets now

Invoke-Command -Session $s -ScriptBlock {Get-SPWeb http:// WinServ-wfe:999}

上面的例子中,创建了持久线程,用户能够在后续的Invoke-Command中调用SharePoint cmdlet。Invoke-Command另外一个缺点是命令补全功能在这里不能使用了,除非在脚本块当中使用的cmdlet,其他的部分均无法使用tab自动补全功能。

启动交互式远程线程

Enter-PSSession和Exit-PSSession是用来启动和退出互交式远程线程的cmdlet。

进入交互式线程可使用如下命令:

Enter-PSSession –ComputerName WinServ-wfe

一旦用户进入交互式远程线程,PowerShell的提示符变成了连接到的远程主机名,如下图1所示在交互式远程线程下的显示信息:

接下来可以使用Add-PSSnapin cmdlet添加SharePoint管理单元。

Add-PSSnapin Microsoft.SharePoint.PowerShell

一旦管理单元被加载,用户就能直接访问所有SharePoint 2010的cmdlet,用户可以使用Get-Help查看SharePoint 2010 cmdlet的帮助:

Get-Help Get-SPWeb -Full

退出交互式线程

用户可以使用Exit-PSSession退出交互式PS线程。需要强调的是通过给Enter-PSSession指定-ComputerName参数只是创建临时的PS线程,这种线程并不是持久线程,任何在该线程中创建和修改的变量以及执行命令的历史将会在退出交互式线程时被清空。

在交互式远程管理中使用持久线程

前面曾经讨论过持久线程的优点,通过持久线程,用户可以进入和退出交互式线程多次,并且所有在远程主机上创建的的数据和变量会一直存在,直到用户显式的一处线程为止。用于能够用Invoke-Command以如下方式创建持久线程:

$s = New-PSSession -ComputerName WinServ-wfe

Enter-PSSession -Session $s

4 为已存在的线程启动交互式远程管理

使用Invoke-Command能创建持久线程,用户还能用Enter-PSSession创建相似的交互式持久线程。用户能用Get-PSSession cmdlet查看所有可用/打开的PS线程。下面的例子中将会使用管道将Get-PSSession的输出传递给Format-List cmdlet获取所有的线程细节,如下图2所示:

Get-PSSession | fl *

能有四种方式进入到现存的PS线程:

方法1:使用session Id

Enter-PSSession –id 1

方法2:使用session实例Id

Enter-PSSession –InstanceId 76e2374f-5bf6-4596-b6e2-840feaf4f27b

方法3:使用session名

Enter-PSSession –Name Session1

方法4:使用-Session参数

$s=Get-PSSession –Id 1

Enter-PSSession –Session $s

以上的四种方法都是启动持久线程“session1”的交互式线程的方法,只是同一事物的不同表现形式而已。

总结

本文介绍了PowerShell 2.0的交互式远程管理以及如何使用Enter-PSSession、Exit-PSSession以及Get-PSSession操作线程的相关属性,以及在交互式远程管理中对持久线程的使用,通过持久线程的使用,用户所执行命令过程中创建和修改的变量能够被保存和共享。交互式远程管理允许用户在本地主机上直接对远程主机进行管理和配置,能够很好的实现对远程主机的管理,这一点和Unix/Linux主机的SSH管理很相似,但是PowerShell的管理功能却不仅限于交互式远程管理,相关的管理方法将会在后续的文章里进行详细的介绍。

 

赛迪网地址:http://tech.ccidnet.com/art/302/20100702/2104173_1.html

 

作者: 付海军
出处:http://fuhj02.cnblogs.com
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.shell.tor.hu/