我想编写一个脚本(使用python或windows批处理)来检查在winows 2003服务器上的RAID系统中,所有磁盘是否联机,活动和同步。
这是我正在使用的内置Windows 2003软件RAID。
我如何从我定期运行的脚本获取这些信息?
编辑:我尝试了代码forms接受的答案。 在我的系统上给出所有的磁盘信息,除了“状态”,总是返回“无”。
我在这里find了另一种营养:
http://www.anchor.com.au/hosting/dedicated/monitoring_windows_software_raid
从脚本调用“echo list volume | diskpart”并使用正则expression式检查返回的输出。 每个驱动器有一行。 可能的状态string值取决于您的操作系统的语言。 不是很好,但工作。
您正在寻找Win32_LogicalDisk WMI类(特别是状态属性)
您可以使用PowerShell或VBScript来访问这个类。
注意:我没有Software Raid安装程序来testing这些,他们只是样本没有充分充实代码
一个快速的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对象的当前状态。 可以定义各种操作和非操作状态。 操作状态包括:“OK”,“Degraded”和“Pred Fail”(一个元素,如启用SMART的硬盘驱动器,可能会正常运行,但可以在不久的将来预测故障)。 非操作状态包括:“错误”,“启动”,“停止”和“服务”。 后者,“服务”,可以在磁盘镜像重新镜像,重新加载用户权限列表或其他pipe理工作时应用。 并不是所有这样的工作都是在线的,但是被pipe理的元素既不是“好的”,也不是其他的一种状态。 该属性是从CIM_ManagedSystemElementinheritance的。
The values are: "OK" "Error" "Degraded" "Unknown" "Pred Fail" "Starting" "Stopping" "Service" "Stressed" "NonRecover" "No Contact" "Lost Comm"