使用Dell工程师编写的WSMAN脚本对BIOS进行远程管理和配置

在前面的章节里面,我们介绍了怎么在Windows上安装和配置WSMAN客户端 - winrm在Linux上安装和配置WSMAN客户端。Windows下是winrm,Linux下可以安装OpenWSMAN。接下来我们来看看怎么使用戴尔工程师编写的WSMAN的脚本对戴尔服务器进行远程管理和控制。

首先我们要在这个英文站点或下面表格下载脚本包和脚本包的说明。

 Web Services Integration Tools
Best Practice Guide Best Practice scripts 2/7/2013
Web Service Interface Guide for Windows WinRM scripts 2/20/2013
Web Service Interface Guide for Linux WSMAN scripts 2/20/2013

在Web Services Integration Tools项下我们可以看到Web Service Interface Guide for Windows,这就是Windows脚本包的说明。WinRM scripts则是对应的Windows下WSMAN脚本包。Linux的分别在Web Service Interface Guide for Linux和WSMAN scripts的链接下。

将所需要的文件下载下来,解压相应的zip脚本包,您会看到类似这样的目录:

这些目录下包含了相当多的脚本,对应的说明在PDF的脚本说明文件中。

例如,我们如果希望对BIOS进行操作,可以看到有个17_Managing_BIOS_Configuration的目录。相应的在PDF文档的第17章可以看到关于此目录下各个脚本的说明。

接下来的例子我们来看看怎么使用WSMAN脚本对BIOS进行管理和配置。

对BIOS进行管理和配置,我们需要进行以下几步操作:

  1. 通过WSMAN脚本读取BIOS的基本信息
  2. 更改BIOS的设置
  3. 把PendingValue应用(Apply)到系统中

首先,我们可以通过WSMAN脚本读取BIOS的基本信息。在脚本文件所在目录下直接运行以下命令:17.1_Listing_the_BIOS_Inventory_Enumeration_Class.bat iDRAC_IP USERNAME PASSWORD 就可以远程获得BIOS的设置信息。其中iDRAC_IP是服务器的iDRAC IP地址,USERNAME/PASSWORD是iDRAC的用户名密码,默认为root/calvin

您也可以使用notepad打开.bat文件,找到winrm指令,使用相应的IP地址、用户名、密码直接执行,输出结果与执行.bat文件相同。例如上面例子中,我们也可以直接输入:

winrm e http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_BIOSEnumeration -u:root -p:calvin -r:https://192.168.1.100/wsman -SkipCNcheck -SkipCAcheck -encoding:utf-8 -a:basic

也即上图中蓝色下划线标识出来的命令。

由于BIOS的设置很多,我们也可以将输出保存成文件。例如:

17.1_Listing_the_BIOS_Inventory_Enumeration_Class.bat iDRAC_IP USERNAME PASSWORD > bios.txt

我们来看看其中的某些输出,了解一下它们的含义。例如以下是关于CPU的VT虚拟化技术设置的输出部分:

DCIM_BIOSEnumeration
AttributeDisplayName = Virtualization Technology     <-- 属性的显示名称:虚拟化技术
AttributeName = ProcVirtualization                              <-- 属性的名称
CurrentValue = Enabled                                              <-- 属性目前的设置值,是启用的
Dependency = null                                                     <-- 属性是否依赖于其它属性设置
DisplayOrder = 409
FQDD = BIOS.Setup.1-1                                            <-- 设备的完整描述名(FQDD)
GroupDisplayName = Processor Settings
GroupID = ProcSettings
InstanceID = BIOS.Setup.1-1:ProcVirtualization          <-- 本属性的实例代码
IsReadOnly = false                                                   <-- 是否只读
PendingValue = null                                                   <-- 是否做了更改等待生效
PossibleValues = Enabled, Disabled                       <-- 允许设置的值
PossibleValuesDescription = Enabled, Disabled       <-- 允许设置的值的描述

我们还可以使用17.2_Getting_a_BIOS_Enumeration_Instance.bat脚本,根据实例代码直接查看某一特定属性的设置。例如,VT设置的实例代码是:BIOS.Setup.1-1:ProcVirtualization,我们可以用Notepad打开17.2_Getting_a_BIOS_Enumeration_Instance.bat文件,将”set INSTANCEID=…”一行改为”set INSTANCEID= BIOS.Setup.1-1:ProcVirtualization”,保存后输入以下命令查看VT技术的设定:

也可直接将17.2_Getting_a_BIOS_Enumeration_Instance.bat中的内容拷贝修改后从命令行直接输入,本例中为:winrm g http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_BIOSEnumeration?InstanceID BIOS.Setup.1-1:ProcVirtualization –u:root -p:calvin -r:https://192.168.0.100/wsman -SkipCNcheck -SkipCAcheck -encoding:utf-8 -a:basic

即上图中蓝色下划线标识出来的命令。

更改BIOS的设置:

使用17.3_Changing_the_BIOS_BootMode_SetAttribute.bat和对应的SetAttribute_BIOS.xml文件更改BIOS设置。例如我们如果要将VT设置改成Disabled,可以使用notepad打开SetAttribute_BIOS.xml文件,将其内容改为:

<p:SetAttribute_INPUT xmlns:p="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_BIOSService">
  <p:Target>BIOS.Setup.1-1</p:Target>
  <p:AttributeName>ProcVirtualization</p:AttributeName>
  <p:AttributeValue>Disabled</p:AttributeValue>
</p:SetAttribute_INPUT>

其中Target内填写FQDD名称”BIOS.Setup.1-1”,AttributeName内填写属性的名称”ProcVirtualization”,AttributeValue内填写希望更改的值”Disable”

保存SetAttribute_BIOS.xml文件,运行以下批处理命令:17.3_Changing_the_BIOS_BootMode_SetAttribute.bat iDRAC_IP USERNAME PASSWORD

等效的直接执行的命令会被显示出来,这里以蓝色下划线表示。
可以看到输出结果:命令已经成功执行。SetResult = Set PendingValue表明该设置等待被应用(Apply)到系统中。RebootRequired = Yes 表明该设置需要重新启动。
这时候使用17.2_Getting_a_BIOS_Enumeration_Instance.bat脚本再次查看VT的设置,可以看到PendingValue是Disabled,等待被应用到系统中。


我们也可以使用17.4_Setting_Multiple_BIOS_BootMode_Parameters.bat脚本和SetAttributes_BIOS.xml配置文件一次性执行多个设置。在此不重复举例。

最后,我们需要把所有的PendingValue应用(Apply)到系统中。可以使用脚本17.7_Applying_Pending_Values_for_BIOS_Boot_CreateTargetedConfigJob.bat和CreateTargetedConfigJob_BIOS.xml文件。我们将CreateTargetedConfigJob_BIOS.xml文件编辑如下:

<p:CreateTargetedConfigJob_INPUT xmlns:p="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_BIOSService">
  <p:Target>BIOS.Setup.1-1</p:Target>
  <p:RebootJobType>2</p:RebootJobType>
  <p:ScheduledStartTime>TIME_NOW</p:ScheduledStartTime>
  <p:UntilTime>20130606120000</p:UntilTime>
</p:CreateTargetedConfigJob_INPUT>

其中RebootJobType可以设置为:1=PowerCycle – 关闭电源再重启;2 = Graceful Reboot without forced shutdown – 正常关机再重启;3 = Graceful reboot with forced shutdown – 强制关机再重启。ScheduledStartTime是计划执行此动作的时间,如果要立即执行,可以设置为TIME_NOW,或者可以设置为某一时刻,具体格式是“年年年年月月日日时时分分秒秒”。UntilTime是运行的时间窗口,如果超过此时间窗口,指令将不会被执行。UntilTime必须晚于当前时间。

执行结果如下。其中InstanceID是此任务的任务号JID_705026664253。稍后我们可以用此任务号查看任务执行的情况。

我们可以使用10_Job_Control_Management目录下的脚本监控任务执行状态。详细请查看PDF脚本说明文件第10章节Job_Control_Management。本例中使用的批处理命令是10.2.3_Get_Status_Of_One_Job.bat。使用Notepad编辑此批处理文件,找到”set INSTANCE=…”,将其更改为”set INSTANCE= JID_705026664253”,然后执行此批处理文件。实际指令为:winrm get http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/root/dcim/DCIM_LifecycleJob?InstanceID=JID_705026664253 -r:https://192.168.1.100/wsman:443 -u:root -p:calvin -a:basic -encoding:utf-8 -SkipCACheck -SkipCNCheck –skiprevocationcheck

命令与执行结果如下图所示。我们可以看到任务已经被列入计划。

再次查看,可以看到任务正在运行中。

此时从iDRAC卡的console中可以看到系统正在自动重启,进入Lifecycle Controller,并完成配置。

等待系统重启并配置完成后,我们再次运行10.2.3_Get_Status_Of_One_Job.bat,系统显示任务已经执行完毕。

运行17.2_Getting_a_BIOS_Enumeration_Instance查看VT的配置,可以看到现在的VT已经被设置为Disable,并且没有PendingValue

总结

我们可以利用一系列戴尔工程师定制的批处理文件,使用WSMAN对戴尔服务器进行管理配置。其中,可以通过:

17.1_Listing_the_BIOS_Inventory_Enumeration_Class.bat、17.2_Getting_a_BIOS_Enumeration_Instance.bat对BIOS配置进行查看;

17.3_Changing_the_BIOS_BootMode_SetAttribute.bat和对应的SetAttribute_BIOS.xml对BIOS进行更改;

17.7_Applying_Pending_Values_for_BIOS_Boot_CreateTargetedConfigJob.bat和对应的CreateTargetedConfigJob_BIOS.xml在指定的时间窗口内将前面的设定应用到系统中;

最后可以使用10.2.3_Get_Status_Of_One_Job.bat查看任务执行的状态.

以上所有操作也可以通过直接将批处理文件中的指令拷贝出来,根据需要修改后直接执行。

附录:

常见缩写

描述

BIOS

Basic Input / Output System

HW

Hardware

iDRAC

Integrated DELL Remote Access Controller

IPL

Initial Program Load

DUP

Dell Update Package

MOF

Managed Object File

CIM

Common Information Model

NIC

Network Interface Controller

RAID

Redundant Array of Independent Disks

FQDD

Fully Qualified Device Description

UEFI

Unified Extensible Firmware Interface

AMEA

Advanced Management Enablement Adapter