我应该如何在Powershell中存储参考变量以继续迭代

时间:2016-04-01 18:51:11

标签: powershell

我正在寻找存储变量$i.Name$i.LastWriteTime的最佳方法,以便我可以继续将文件夹名称加载到我的.exe中而无需重复。

可能类似于:

$LastFolderProcessed = "Stored LastWriteTime from last processing"
if ($i.LastWriteTime -gt $LastFolderProcessed } | `
Continue....

我编写了一个从任务计划程序启动的脚本,以完成以下步骤:

1。)检查原始目录并将新项目(文件夹)复制到处理中   。目录

2。)循环处理目录并找到每个项目

3.)将每个项目分配给变量$ i.Name

4.。)定义CMD和Args。运行(安培)。

脚本

Set-ExecutionPolicy unrestricted -Force

cpi C:\Apps\AutoTest\Analysis\2016\*  C:\Apps\AutoTest\Loading -Recurse

foreach($i in Get-ChildItem C:\localApps\AutomationTest\Loading)
{

    if ($i.PSisContainer) {$i.Name}

    $CMD = 'C:\Program Files\Analysis\LoadProgram.exe'
    $arg1 = "-database:Data Source=MSSQLSERVER"
    $arg2 = "-directory:C:\Apps\AutomationTesting\Loading\$i"
    $arg3 = "-config:C:\Program Files\Analysis\Configs\loadconfig.xml"

   & $CMD $arg1 $arg2 $arg3
}

$i.LastWriteTime

该脚本运行我的.exe [与Args]并将加载$i.name变量及其找到的每个文件夹名称。如果目录中有5个文件夹名称,则每次迭代将运行.exe 5次。

脚本将每天运行。

我正在寻找一种存储引用变量的好方法,以便在2天内,如果脚本启动并找到3个新的文件夹名称,它将只处理新的文件夹。

这是我认为我最好的选择可能是$i.LastWriteTime

之类的地方

1 个答案:

答案 0 :(得分:3)

到目前为止,最简单的方法是使用Export-ClixmlImport-Clixml。这些cmdlet将对象序列化为XML文件,反之亦然。

例如,如果您想存储整个文件列表:

$list = Get-ChildItem #...

$list | Export-Clixml -Path C:\my\path\MyFiles.xml

重装它,它是一样的:

$oldList = Import-Clixml -Path C:\my\path\MyFiles.xml