如何通过脚本检查内置 Windows 2003 软件 RAID 的完整性

如何通过脚本检查内置 Windows 2003 软件 RAID 的完整性

我想编写一个脚本(使用 python 或 windows 批处理)来检查 winows 2003 服务器上的 raid 系统中所有磁盘是否在线、活动且同步。

这是我正在使用的内置 Windows 2003 软件 raid。

如何从我定期运行的脚本中获取这些信息?

编辑:我尝试了接受答案中的代码。在我的系统上,除了“状态”之外,所有磁盘信息都已给出,而“状态”始终返回“无”。

我在这里找到了另一个解决方案:

http://www.anchor.com.au/hosting/dedicated/monitoring_windows_software_raid

从脚本中调用“echo list volume | diskpart”并使用正则表达式检查返回的输出。每个驱动器有一行。status 的可能字符串值取决于操作系统的语言。不是很好,但有效。

答案1

您正在寻找Win32_逻辑磁盘WMI 类(特别是状态属性)

您可以使用 PowerShell 或 VBScript 来访问此类。

注意,我没有软件 Raid 设置来测试这些,它们只是样本,而不是完整的代码

一个快速的 PowerShell 脚本看起来是这样的:

$CheckDrive = gwmi -query "Select * from Win32_LogicalDisk where DeviceID='C:'"
$CheckDrive.properties.status

或者如果你想要循环遍历一堆驱动器,你可以执行以下操作:

$CheckDrive = gwmi Win32_LogicalDisk
foreach ($i in $CheckDrive){$i.properties.Status}

来自链接的站点,以下是状态输出的选项:

地位

   Data type: string
   Access type: Read-only

对象的当前状态。可以定义各种操作和非操作状态。操作状态包括:“正常”、“降级”和“预测故障”(一个元素,例如启用 SMART 的硬盘驱动器,可能运行正常但预测在不久的将来会出现故障)。非操作状态包括:“错误”、“正在启动”、“正在停止”和“服务”。后者“服务”可能适用于磁盘镜像重新同步、重新加载用户权限列表或其他管理工作。并非所有此类工作都处于在线状态,但托管元素既不是“正常”也不是其他状态之一。此属性从 CIM_ManagedSystemElement 继承。

   The values are:

   "OK"
   "Error"
   "Degraded"
   "Unknown"
   "Pred Fail"
   "Starting"
   "Stopping"
   "Service"
   "Stressed"
   "NonRecover"
   "No Contact"
   "Lost Comm"

相关内容