2016-04-19 4 views
2

Ich habe versucht, ein PowerShell-Skript zu erstellen, das ein Ereignis schreibt, wenn die Textdateien in einem Ordner älter als 15 Minuten sind.Powershell zum Ereignis

Dies ist der Code, den ich zu verwenden ist versucht:

$targetfile=get-childitem C:\Users\user\Desktop\bizin\*.txt 

if ($targetfile.AddMinutes -15) 

{ 

write-eventlog -logname Application -source ESENT -eventID 9999 -entrytype Error -message "No new files in 15min gate is down!" -category 3 

'create event log to say bad things have happened' 

} 

hat sich immer das Ereignis, als ich das Skript ausführen. Ich möchte nur ein Ereignis erhalten, wenn die Datei älter als 15 Minuten ist. Es wird eine geplante Aufgabe sein, die alle 15 Minuten ausgeführt wird.

+0

basierend auf [technet] (https://social.technet.microsoft.com/Forums/office/en-US/ 41bea897-00c1-424f-a23f-c38d67bc0e32/powershell-script-hilfe-get-a-file-created-datum-für-mehrere-maschinen? Forum = winserverpowershell) sollten Sie verwenden $ FileDate = (Get-ChildItem \\ $ computer \ c $ \ temp \ logfile.txt) .CreationTime um die Zeit zu bekommen – LiamG

Antwort

3

Sie benötigen die LastWriteTime Eigenschaft der Datei zuzugreifen und vergleichen Sie es mit einem DateTime Objekt:

$targetFiles = Get-ChildItem -Path 'C:\Users\user\Desktop\bizin\' -Filter *.txt 
foreach ($targetFile in $targetFiles) 
{ 
    if ($targetFile.LastWriteTime -lt [DateTime]::Now.AddMinutes(-15)) 
    { 
     # Write the eventlog.... 
    } 
} 

Hinweis: Sie den -Filter Parameter können Sie für die Get-ChildItem cmdlet nur txt Dateien abrufen. Hier ist das gleiche Beispiel mit der Verwendung von Alias-Namen und der Pipeline in nur eine Zeile:

gci -Path 'C:\Users\user\Desktop\bizin\' -Filter *.txt | ? { $_.LastWriteTime -lt [DateTime]::Now.AddMinutes(-15) } | % { <# Write the eventlog... #> }