Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Skript sollte als Dienst laufen. Habe praktisch keine Ahnung von Powershell.

$
0
0

Das Skript sollte überprüfen ob eine Datei in einem Verzeichnis erstellt worden ist. Wenn diese Datei nicht leer ist, wird sie weggkopiert. Soweit läuft das aber wenn es als Dienst läuft, dann kopiert es die Datei erst, wenn der Dienst beendet oder neugestartet wurde. Da ich praktisch gar keine Erfahrung mit Powershell habe, habe ich mir das Skript mehr oder weniger zusammenkopiert.

#logfunktion
function log($message) {
 Write-Eventlog -LogName Application -Source Application -EventId 1337 -EntryType Information -message $message
}

#Pfadangabe und Filter
$folder = 'c:\test' #Pfad angabe
$destination = 'c:\test_test' #Zielpfad
$filter = '*.txt'  #Filter

#Falls nötig Unterverzeichnisse noch "aktivieren".                        
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'}

#Wenn ein File erstellt wird.
Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
 $name = $Event.SourceEventArgs.Name
 $changeType = $Event.SourceEventArgs.ChangeType
 $timeStamp = $Event.TimeGenerated
 if ((Get-Item $folder\$name).length -gt 0) {
  log "The file $name was $changeType at $timeStamp"
  copy-Item $Event.SourceEventArgs.FullPath $destination
  log "The file $name has been copied to $destination at $timestamp"
 } 
}
# Befehl um das Monitoring zu beenden.
# Unregister-Event FileCreated
try {
log "running"
sleep -seconds 10000
}
finally {
Unregister-Event filecreated
log "service ended"
}


Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>