Powershell - 建议:Comparing/Storing 脚本运行之间的数据

Powershell - Advice: Comparing/Storing data between script runs

这就是我想要完成的(下面是一个 ps1 脚本 运行 通过 windows 任务调度程序按计划进行的:

I want to get all locked accounts from a DB with a query (I can do this and it works)

Compare these returned results to those found locked in a previous run of this script (using a file in some format that stores these results)

For each locked account, add to the tally in the file (existing id if it present, else make a new entry for that id)

For each object in the file that IS NOT present in the returned locked accounts from the original query to the DB, remove them from the file (reset the tally/delete that object entry)

Check if the tally for any object has reached a predetermined threshold then do something if it has.

我的问题是我不知道应该如何存储来自初始数据库查询的对象数组(csv?json?纯文本?)。

以前有人用 Powershell 做过类似的事情吗?有没有简单的方法来 store/retrieve/manipulate 这个数据?

我试过一个纯文本文件,其格式是让每一行都有一个记录的锁定帐户,然后将它们放入一个数组中,然后继续比较这两个数组..但是得到 messy/complicated在彼此内部有多个 foreach 循环。

任何帮助将不胜感激:)

我总是鼓励我的同事使用 SQL 来存储所有脚本数据,在我们的例子中,我们有数百个脚本来做各种各样的事情。平面文件数据库很容易被破坏,例如,如果它与其他东西同时被读取或写入并且被锁定。

您必须评估您的逻辑并评估是否有任何东西可能会扰乱文件并在运行时破坏脚本。如果一切正常,那么 CSV 文件就可以了。否则我会使用 SQL。从 powershell 写入和读取 SQL 非常容易。