2016-04-01 55 views
1

'de devam eden yineleme için bir başvuru değişkenini nasıl saklamalıyım? $i.Name veya $i.LastWriteTime değişkenini depolamanın en iyi yolunu arıyorum, böylece Klasör adlarını çoğaltmadan benim .exe'üme yüklemeye devam edebilirim.Powershell

Muhtemelen gibi bir şey: Ben Görev Zamanlayıcısı fırlatılan bir komut dosyası, aşağıdaki adımları tamamlamak için yazdığı

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

:

1.) orijinal dizini kontrol edin ve yeni öğeleri kopyalamak (Klasörler) dizininin işlenmesi.

2.) işlem dizini aracılığıyla döngü ve her öğe

3.

) değişken $ i.Name

4.) CMD ve Args Define için her öğeyi atama bulabilirsiniz. Çalıştırın (&).

Senaryo

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 

komut [Args ile] benim .exe çalışır ve bulduğu her klasör adı ile $i.name değişkeni yükleyecektir. Dizinde 5 klasör adı varsa, her yineleme için .exe'yi 5 kez çalıştırır.

Komut dosyası günlük olarak çalışacaktır.

Bir başvuru değişkenini saklamak için iyi bir yol arıyorum, böylece 2 gün içinde, betik açılırsa ve 3 yeni klasör adı bulursa, yalnızca yeni Klasörleri işleyecektir. Benim en iyi bahis en kolay yolu Export-Clixml ve Import-Clixml kullanmaktır farkla $i.LastWriteTime

cevap

3

gibi bir şey kullanıyor olabilirsiniz düşünüyordum nerede

Bu

olduğunu. Bu cmdlet'ler nesneleri bir XML dosyasına ve tersine serileştirir.

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

Sonra yapmanız gereken istediğiniz tüm onay akımıdır: bu hemen hemen aynı olduğunu

$list = Get-ChildItem #... $list | Export-Clixml -Path C:\my\path\MyFiles.xml 

yeniden o:

Yani, örneğin size bütün dosya listesini saklamak istiyorsa İçe aktardığınız şeylerle önceki yazma sürelerine karşı yazımlar. –

+0

@briantist Bu harika. Gerçekten iyi çalıştı. İşte ben de kullandığım iyi bir referans linki. [Import-Clixml] (https://technet.microsoft.com/en-us/library/ee176873.aspx) – Twdeveloper

+0

@ChrisKuperstein Karşılaştırma sürecini arıyorum. ($ List.LastWriteTime -gt $ oldList.LastWriteTime} | ' Devam… (En son klasör isimlerini işleme koy) – Twdeveloper