代码改变世界

PowerShell 2.0语言远程管理之理解线程配置

2010-12-13 00:49  @天行健中国元素  阅读(1275)  评论(0编辑  收藏  举报

PowerShell远程管理被启用后,将会会有默认的线程配置文件被创建和注册。同时Invoke-Command,Enter-PSSession和New-PSSession cmdlet都有一个-ConfigurationName参数可以用来指定不同的线程配置文件,这就给用户定制不同的执行环境带来了极大的方便,用户可以定制好不同的环境并保存在配置文件中,在需要的时候就能方便的调用了。

在本文中将会介绍与PowerShell 的PS相关的线程配置文件cmdlet,讨论如何创建自定义PS线程配置文件以及如何调用。

1 PS线程配置文件包含内容

线程配置文件能用于定义:

1. 谁能在本机创建PowerShell线程

2. 访问不同级别用户在链接到远程PowerShell线程时,可执行的cmdlet的范围

当使用Enable-PSRemoting启用PowerShell远程管理时,能看到最后是写入Microsoft.PowerShell和Microsoft.PowerShell32(在X64位系统中)。默认线程配置文件是用于为制定配置文件名的情况下远程用户连接到本地系统时使用。因此,默认情况下只有管理员用户组成员才能创建远程线程。因此PowerShell线程配置文件用于:

1. 自定义用户远程体验

2. 通过创建线程配置文件区分不同级别的访问权限委派管理

2 可用于管理线程配置文件的cmdlet

下面是能用于线程配置文件管理的cmdlet:

1. Register-PSSessionConfiguration

2. Unregister-PSSessionConfiguration

3. Enable-PSSessionConfiguration

4. Disable-PSSessionConfiguration

5. Set-PSSessionConfiguration

6. Get-PSSessionConfiguration

创建新的线程配置文件

Regidter-PSSessionConfiguration cmdlet用于创建新的线程配置文件。用户能用C#汇编或PowerShell脚本作为启动脚本作注册线程配置文件。这个启动脚本能用来自定义远程体验。比如,创建用Import-Module导入活动目录模块的脚本,内容如下:

Import-Module ActiveDirectory

将上面的内容保存为StartUpScript.ps1,接下来使用Register-PSSessionConfiguration cmdlet创建新的线程配置文件,命令如下:

Register-PSSessionConfiguration –Name “ActiveDirectory” –StartUpScript C:\Script\StartUpScript.ps1

接下来会提示用户确认操作,并重启本机的WinRM服务。

3列出可用的线程配置文件

3.1从本机主机

Get-PSSessionConfiguration cmdlet会列出所有在本地计算机可用的线程配置信息文件,启动文件以及允许访问该配置信息文件的用户权限组。

3.2从远程主机

Get-PSSessionConfiguration cmdlet是不能用于访问远程计算机上的PS线程配置信息文件的,但能通过Get-WSManInstance cmdlet来实现这一功能,代码如下:

Get-WSManInstance winrm/config/plugin -Enumerate -ComputerName WinServ-wfe | Where ` { $_.FileName -like '*pwrshplugin.dll'} | Select Name

这样会返回所有远程主机上可用的线程配置名,用户能用其中的某个文件连接到远程主机使用PowerShell的远程管理。

【提示】

用户需要在远程主机上有相应访问线程配置文件的权限,以便在执行远程管理时能够调用该文件。

4 自定义PS线程配置文件的访问权限

用户能用带有-ShowSecurityDescriptorUI参数的Set-PSSessionConfiguration cmdlet指定允许访问该配置文件的用户组,命令如下所示:

Set-PSSessionConfiguration -Name ActiveDirectory -ShowSecurityDescriptorUI

随后会弹出权限管理对话框,如下图1所示:

选择允许→执行 权限,并确认,接下来会提示要重启WinRM服务。这样管理员或管理员组的成员将会被赋予线程配置文件的执行权限。

5 调用自动以线程配置文件

用户可以使用过New-PSSession,Enter-PSSession和Invoke-PSSession cmdlet导入线程配置文件,-ConfigurationName参数能够被用于指定线程配置文件。下面的代码段用于展示三种用线程配置文件名调用远程线程不同的方式:

$s = New-PSSession -ComputerName WINSERV-WFE -ConfigurationName ActiveDirectory

Enter-PSSession -ComputerName WINSERV-WFE -ConfigurationName ActiveDirectory

Invoke-Command -ComputerName WINSERV-WFE -ConfigurationName ActiveDirectory -ScriptBlock {Get-Process}

在前面的章节中曾经使用Invoke-Command在持久线程中导入活动目录模块,将持久线程中导入的活动目录cmdlet加载到本地线程中。

经用线程配置文件

用户能够使用Disable-PSSessionConfiguration cmdlet禁用已经存在的线程配置文件并组织用户用该线程配置文件连接到本地计算机,可以用-Name参数指定要禁用哪个线程配置文件,如果用户没有指定配置文件名,则禁用默认的Microfsoft.PowerShell线程配置文件。

Enable-PSSessionConfiguration cmdlet能启用已被禁用的配置文件,用户能用-Name参数指定那个线程配置文件要被启用。

6 删除线程配置文件

用户能使用Unregister-PSSessionConfiguration cmdlet删除已经禁用的线程配置文件,与此同时用这个命令可能很容易删除默认的线程配置文件——Microsoft.PowerShell,但是如果默认的配置文件被删除后,有需要再次使用的话可以再次执行Enable-Remorting cmdlet生成这个文件。

7 总结

在本章,介绍了PowerShell线程配置文件的相关操作,如何创建自定义配置,以及如何管理这些线程配置文件。默认情况下,用户需要是远程主机的本地管理员组成员才可以操作线程配置文件,而使用自定义线程配置文件,并给配置文件设定权限,就可以使非管理员能使用PowerShell远程管理命令,并可以为不同的用户组定制个性化的管理方案,方便后续的维护和使用。

 

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

 

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