通过PowerShell更新并发网络XML文件

时间:2015-03-16 18:34:11

标签: xml powershell concurrency

我需要在网络上维护一个共享的XML文件,该文件将由多台计算机进行更新。

我的理解是 1:没有本机PowerShell或.NET函数来维护XML文件,尤其是在并发访问方案中。和 2:没有用于锁定网络上文件的本机PowerShell机制。 所以我需要某种本土解决方案。在极端情况下,每台机器每年可以更新15-20次文件,并且需要扩展到多达一千台机器。但是要写入的实际数据量很小,而之前发生的其他事情可能非常耗时且可变。在绝大多数情况下,它不会是大规模的更新,更多的是最多几百台机器的订单,在甚至15-20分钟的过程中更新文件。因此,多台机器同时访问文件的可能性很小,但仍需要解决。

我的想法是让机器上运行的脚本重命名附加机器名的XML文件。然后它可以读取XML,根据需要进行修改,写入以前的文件,然后重命名。 该脚本将有一个等待循环,该循环查看是否没有正确的文件但是有一个重命名的文件,并等到处理完该文件的其他机器完成并重新命名该文件,然后继续自己的努力。机器脚本将作为远程作业从中央脚本启动,这可能会错开作业以进一步减少冲突的可能性。

我的第一个问题是,我错过了一些更好的方法吗?我必须坚持这里的简单,我无法进入数据库等。它需要是一个简单的平面文件。

而且,假设没有其他明显的方法,是否有任何人可以看到的重大陷阱或陷阱?我确信我需要解决各种错误情况,并且可能需要将数据保存到每台计算机的单个文件以及单独的实用程序,以便在完成所有更新后将数据提取到主文件中。但如果我能帮助它,我不希望那是主要的工作流程。

我知道,一个相当10,000英尺的问题,但任何见解都非常感激。我计划创建一个包含1000条记录的虚拟XML文件,然后在同一时刻启动的3-4台机器上运行一个简单的远程脚本,并在进程上放置一个计时器,这样我就可以看到每个操作需要多长时间如果任何机器甚至需要等待写。但如果我能从别人的错误中吸取教训,我宁愿这样做。 ;)

谢谢, 戈登

0 个答案:

没有答案