在计划任务中使用 Powershell 处理列表

Processing a list with Powershell on a Scheduled Task

我是 powershell 的新手,所以我不确定我是否想太多了我想做什么,希望有人能帮助我。

我想创建一个 Windows 计划任务,每 4 小时调用一次我的 powershell 脚本,没问题。该脚本需要处理范围从 1 到 140 的 ID 列表,(他们在这里和那里跳过一些,这使得这更难)脚本只是调用另一个外部程序,每个 ID 大约需要 2 小时,我们给它 4 小时为了安全。因此,在加载 powershell 脚本时,它需要从上次扫描的文件中读取,我可以使用

    $lastscan = Get-Content'lastScan.txt'

然后脚本需要找到列表中的下一个对象,它可能会在这里或那里跳过一个数字,所以它不像只是递增最后一次扫描那么简单 运行。一旦有了下一个 ID,它将开始扫描并将新值保存到名为 "lastScan.txt" 的文本文件中并退出。我唯一需要帮助的是如何根据 lastscan 运行 在我的列表中找到下一个扫描。该列表由换行符分隔,但如果它更容易,我可以编辑它。

    1
    5
    6
    9
    etc, etc, ...

假设您有一个用 Get-Content 填充的字符串数组,并且假设该数组不包含重复项,您可以使用 Array.IndexOf 方法获取当前 ID 的索引,然后 return 数组中的下一个元素。示例:

$x = "1","2","3"
$currentId = "2"
$nextIndex = [array]::IndexOf($x, "2") + 1
$nextId = $x[$nextIndex] #nextId should now be "3"