- 起始情况:有超过 50 种(最坏情况)不同语言的大量服务器。每个服务器可能有不同的语言/日期设置。操作系统是 w2k3 和 w2k8r2。我想从所有这些服务器收集计划任务。特别是日期必须采用一种文化模式,因为我想将收集的文件上传到数据库中。我更喜欢一个适用于两个操作系统的解决方案,除了没有其他东西能很好地工作。
- 第一个想法:使用 cmd 命令“schtasks /query /fo csv /v >file.txt”收集数据。这很好用,我得到了我需要的所有信息。(在 2k3 和 2k8 中列的顺序不同;但这可以在 c# 中处理)。问题:在这个解决方案中,日期很糟糕(语言设置的不同日期格式) - 我不想手动解析它。
- 第二个想法:通过 wmi 获取计划任务。很容易在msdn上找到一个站点。问题: “此类只能返回使用脚本或 AT.exe 创建的作业。它不能返回有关由计划任务向导创建或修改的作业的信息。” 我知道服务器上大约 30 - 40 % 的 schtasks 是手动创建的(因此通过任务向导)。
- 问题:那么,如何在不手动解析日期信息的情况下获取所有 schtasks 信息?
2 回答
新想法 - 编写一个脚本,通过两种方式从服务器收集系统信息。首先使用 systeminfo wmi,然后使用 cmd 命令“systeminfo >file.txt”。
systeminfowmi 文件包含独特模式的安装日期(例如:20121114094908.000000+060)。cmd 命令的文件包含与文化相关的安装日期:(例如:14.11.2012, 09:49:08)
有了这些信息,我编写了一个算法,它在 cmd-commands 文件中搜索 wmifile 给出的日期和时间部分。有了这个,我知道年/月/日等的顺序,但不知道该服务器中使用了哪种语言/日期设置。(当然你可以重新得出结论,但我不在乎这个)。
收集脚本(sysinfo wmi 和 sysinfo cmd)每天运行。之后运行日期识别。因此,将为每个服务器创建一个唯一的日期转换密钥。该信息被加载到数据库中。总的来说,您将来将通过存储过程获得所有具有相应日期转换键的服务器名称 - 然后您将能够准确地转换每个日期。
再次感谢 user2199816 - 他的解决方案也很有效。
使用您的命令行任务来 file.txt 并将该文件导入 Excel。然后使用日期/时间格式来查看它是否会自动正确解析它们。
http://excelsemipro.com/2011/06/regional-date-formats-in-excel/