服务器管理器提供了一组 Windows PowerShell cmdlet 和一个命令行工具 ServerManagerCmd.exe,用于在运行 Windows Server® 2008 R2 的计算机上自动部署角色和功能。

您可以使用 Windows PowerShell cmdlet 或 ServerManagerCmd.exe 来安装和删除角色、角色服务和功能。服务器管理器 cmdlet 和 ServerManagerCmd.exe 可以显示计算机上已安装的以及可安装的所有角色、角色服务和功能的列表。

ServerManagerCmd.exe已被windows弃用,后续版本可能不会支持该工具,转而提供powershell cmdlet来管理服务器角色和功能。

Windows PowerShell 和服务器管理器

Cmdlet(发音为 command-lets)是 Windows PowerShell 2.0 附带的内置命令行工具,默认情况下它作为 Windows Server 2008 R2 的一部分安装。有关 Windows PowerShell 以及 cmdlet 如何工作的详细信息,请参阅 Windows PowerShell 的“入门”指南。若要打开“入门”,请依次单击「开始」“所有程序”“附件”Windows PowerShell 2.0“文档”,打开您的区域设置所对应的文件夹,然后双击 GettingStarted.rtf

若要运行任何与服务器管理器有关的 Windows PowerShell cmdlet,您必须使用提升的用户权限运行 Windows PowerShell。为此,请依次单击「开始」“所有程序”“附件”Windows PowerShell,右键单击 Windows PowerShell 快捷方式,然后单击“以管理员身份运行”。在使用服务器管理器 cmdlet 之前,还必须先将服务器管理器模块加载到每个新的 Windows PowerShell 会话中。若要执行此操作,请在使用提升的用户权限打开的 Windows PowerShell 会话中,键入 Import-Module Servermanager,然后按 Enter。

以下三个 cmdlet 允许您使用 Windows PowerShell 安装、删除或查看有关可用角色的信息。有关如何使用其中任一 cmdlet 的详细信息,请在 Windows PowerShell 会话中,输入 Get-Helpcmdlet_name-full,其中 cmdlet_name 表示以下值之一。

  • Add-WindowsFeature

     
  • Get-WindowsFeature

     
  • Remove-WindowsFeature

默认情况下,Windows PowerShell 模块和管理单元不在 Windows PowerShell 会话中加载。

以下过程介绍如何启动 Windows PowerShell 会话并在默认情况下加载所有模块和管理单元。

启动 Windows PowerShell 以便加载所有 Windows PowerShell 模块和管理单元的步骤
  • 右键单击任务栏中的 Windows PowerShell 图标,然后单击“导入所有模块”

另外在管理工具中发现windows powershell modules工具,使用管理员账户运行后同样也会导入所有模块。

Powershell 扩展阅读:

1. PowerShell管理单元(Snap-in): Windows PowerShell管理单元是被编译成DLL文件的.NET程序,包括提供程序、cmdlet和函数。Windows PowerShell包含一些内置的管理单元,同时我们也可以自己手动添加自己写的管理单元 

Windows PowerShell V2内置管理单元包括:Microsoft.PowerShell.Core, Microsoft.PowerShell.Host, Microsoft.PowerShell.Management, Microsoft.PowerShell.Security, Microsoft.PowerShell.Utility, Microsoft.PowerShell.Diagnostics, Microsoft.PowerShell.WSMan.Management

查看计算机中的管理单元:get-pssnapin

查看每个Windows PowerShell提供程序所属的管理单元:get-psprovider | format-list name,pssnapin

查看某个管理单元中的cmdlet:get-command -module <snap-in_name>

对于内置的管理单元,每次启动Windows PowerShell时会被自动添加到会话中来。而对于我们自己写的或者从别的地方得到的管理单元,则需要首先注册这些管理单元然后再将他们添加到会话中来,"get-pssnapin -registered"命令可以用来查看你系统中注册过的管理单元,那么如何来注册管理单元呢?可以参考http://msdn.microsoft.com/en-us/library/ms714644(VS.85).aspx 

 

将一个管理单元添加到当前对话:add-snapin <snap-in_name>

将一个管理单元移除出当前对话:remove-snapin <snap-in_name>

将管理单元添加到当前对话中后,管理单元只在当前会话中可用,如果我们想要在将来的会话中继续使用此管理单元,我们需要将它添加到配置文件中,首先将管理单元保存到一个控制台文件(.psc1),然后在需要使用此管理单元时用这个控制台文件启动PowerShell。

 

保存到控制台文件:export-console <consolefile_name>

使用控制台文件启动PowerShell:powershell.exe -psconsolefile <consolefile_name>

2. Windows PowerShell提供程序(providers)提供的数据显示在一个驱动器中,可以像浏览硬盘一样浏览该驱动器,并且允许查看、查找和管理相关的数据。

PowerShell内置的提供程序:Alias, Certificate, Environment, FileSystem, Function, Registry, Variable, WSMan.

列出所有可用的提供程序: get-psprovider

获得一个提供程序驱动器的所有属性:get-psdrive <drive_name(e.g.hklm)> | format-list *

查看驱动器的内容:get-childitem <drive_name>:\childitem

举例:get-childitem hklm:\software

进入驱动器:set-location <drive_name>:

3. Windows PowerShell模块(module): 模块包含了若干Windows PowerShell命令。比如cmdlets,提供程序(Providers),函数(functions),变量(variables),别名(aliases)。

Windows PowerShell模块是独立的、可重用的执行单元,可以包括以下内容:

  • 通过.PSM1文件调用的脚本函数;
  • 被编译成.DLL文件并且通过.PSD1调用的.NET组件;
  • 通过.DLL调用的PowerShell管理单元;
  • 在.PS1XML文件中描述的自定义视图和数据类型。

使用模块需要执行以下任务:

  1. 安装模块

如果当前用户没有模块文件夹为当前用户创建模块文件夹:new-item -type directory -path $home\Documents\WindowsPowerShell\Modules

将整个要安装的模块文件夹copy到上面的文件夹中

我们可以将模块安装到任意文件夹,但为了便于管理,建议安装到默认文件夹。

获取已安装的模块:get-module -listavailable

获取当前会话中导入的模块:get-module

  1. 将模块导入到Windows PowerShell会话

导入默认模块路径的模块:import-module <module_name>

导入非默认路径的模块时要将模块的完整路径输入,例如,导入c:\ps-test文件夹下的TestModules模块:

Import-module c:\ps-test\TestModules

将所有模块导入到当前会话中:

对于Windows7和Windows Server 2k8 R2,只需要右击任务栏上的powershell图标,然后选择"Import all modules"即可

对于其他版本的Windows操作系统,可以这样导入:get-module -listavailable | import-module

移除模块:remove-module <module_name>

  1. 找到模块添加的命令

Get-command -module <module_name>

  1. 使用模块添加的命令

模块默认路径包括两种,system和current user

System: $pshome\Modules

(%windir%\System32\WindowsPowerShell\v1.0\Modules)

Current user: $home\Documents\WindowsPowerShell\Modules

(%UserProfile%\Documents\WindowsPowerShell\Modules)

- or -

$home\My Documents\WindowsPowerShell\Modules

(%UserProfile%\My Documents\WindowsPowerShell\Modules)

查看模块默认路径: $env:psmodulepath

添加模块默认路径:$env:psmodulepath = $env:psmodulepath + ";<path>"