Young Juiicehead 0 Geschrieben 27. November 2016 Melden Teilen Geschrieben 27. November 2016 Moin Leute Nehmen wir an, es gibt einen Parentfolder mit dem Namen "Parentfolder". Im Parentfolder befinden sich weitere wichtige Ordner zb. Ordner01, Ordner02, etc. In diesen Unterordnern befinden sich nochmal weitere Ordner zb. Unterorder01, Unterordner02, etc. Wenn jemand den Unterorder01 verschiebt oder löscht, erscheint in einem Logfile "Parentfolder was changed at zb 14:00 Uhr". Nun zu meiner Frage. Ist es möglich das bei der Ausgabe (logfile) nicht der höchste Ordner (Parentfolder) sondern wie oben zb Ordner01 erscheint? Es ist einfach so, das bei uns sehr viele Ordner existieren und wen immer nur der "Parentfolder" angezeigt wird, hilft dies auch nicht weiter weil stündlich Sachen in den Ordnern gemacht werden. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 27. November 2016 Melden Teilen Geschrieben 27. November 2016 sollte möglich sein: https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.100).aspx Use FileSystemWatcher to watch for changes in a specified directory. You can watch for changes in files and subdirectories of the specified directory. You can create a component to watch files on a local computer, a network drive, or a remote computer. FileSystemWatcher.IncludeSubdirectories Property https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.includesubdirectories(v=vs.100).aspx Zitieren Link zu diesem Kommentar
Young Juiicehead 0 Geschrieben 27. November 2016 Autor Melden Teilen Geschrieben 27. November 2016 sollte möglich sein: https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.100).aspx FileSystemWatcher.IncludeSubdirectories Property https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.includesubdirectories(v=vs.100).aspx Ich bräuchte es für ein Script. Das heisst PowerShell:) Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 27. November 2016 Melden Teilen Geschrieben 27. November 2016 ich denke, du hast ein Skript mit FSW?btw: die Links beschreiben die FSW-Klasse in .Net. .Net ist universal einsetzbar auch in PS. 1 Zitieren Link zu diesem Kommentar
Young Juiicehead 0 Geschrieben 27. November 2016 Autor Melden Teilen Geschrieben 27. November 2016 Ich bräuchte es für ein Script. Das heisst PowerShell:) Ich bräuchte es für ein Script. Das heisst PowerShell:) sollte möglich sein: https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.100).aspx FileSystemWatcher.IncludeSubdirectories Property https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.includesubdirectories(v=vs.100).aspx Der Quellcode bis jetzt: $folder = 'C:\Users\Testuser\Desktop\ScriptOrdner\' # Enter the root path you want to monitor. $filter = '*.*' # You can enter a wildcard filter here. # In the following line, you can change 'IncludeSubdirectories to $true if required. $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [iO.NotifyFilters]'FileName, LastWrite'} # Here, all three events are registerd. You need only subscribe to events that you need: Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated Write-Host "The file '$name' was $changeType at $timeStamp" -fore green Out-File -FilePath C:\Users\Testuser\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"} Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Action { $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated Write-Host "The file '$name' was $changeType at $timeStamp" -fore red Out-File -FilePath C:\Users\Testuser\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"} Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action { $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated Write-Host "The file '$name' was $changeType at $timeStamp" -fore white Out-File -FilePath C:\Users\Testuser\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"} ich denke, du hast ein Skript mit FSW? btw: die Links beschreiben die FSW-Klasse in .Net. .Net ist universal einsetzbar auch in PS. Quellcode: $folder = 'C:\Users\Testuser\Desktop\ScriptOrdner\' # Enter the root path you want to monitor. $filter = '*.*' # You can enter a wildcard filter here. # In the following line, you can change 'IncludeSubdirectories to $true if required. $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [iO.NotifyFilters]'FileName, LastWrite'} # Here, all three events are registerd. You need only subscribe to events that you need: Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated Write-Host "The file '$name' was $changeType at $timeStamp" -fore green Out-File -FilePath C:\Users\Testuser\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"} Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Action { $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated Write-Host "The file '$name' was $changeType at $timeStamp" -fore red Out-File -FilePath C:\Users\Testuser\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"} Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action { $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated Write-Host "The file '$name' was $changeType at $timeStamp" -fore white Out-File -FilePath C:\Users\Testuser\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp"} Kann mir irgendwie nicht vorstellen wie das gehen sollte:/ ja mit FSW Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 27. November 2016 Melden Teilen Geschrieben 27. November 2016 Dann beschäftige dich ein bischen mit .Net Scripting in Powershell. Dann kannst du alle Properties und Methods der Klasse nutzen. Ich habe jedenfalls keine Zeit dazu, dir dein Script fein zu tunen. Tipps natürlich jederzeit gerne! Zitieren Link zu diesem Kommentar
Young Juiicehead 0 Geschrieben 27. November 2016 Autor Melden Teilen Geschrieben 27. November 2016 Dann beschäftige dich ein bischen mit .Net Scripting in Powershell. Dann kannst du alle Properties und Methods der Klasse nutzen. Ich habe jedenfalls keine Zeit dazu, dir dein Script fein zu tunen. Tipps natürlich jederzeit gerne! Ich will auch nicht das du mein ganzes Script fertig schreibst. Das ist nur ein Teil davon. Hättest mir nur diesen kleinen Teil machen können. Trotzdem Danke Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 27. November 2016 Melden Teilen Geschrieben 27. November 2016 - Warum versuchst du es nicht einfach selbst? Du hast doch in deinem Script oben bereits mit der Integration von .Net angefangen. Mit dem Scripting von .Net Klassen erlangst eine Fähigkeit, die dir mindestens die nächsten 5 Jahre weiter hilft! - "Functions" erleichtern Scripting übrigens erheblich. - Auch dieser "kleine Teil" würde mich in Gänze mindestens zwei Stunden meiner Freizeit kosten. Da bitte ich dich um Verständnis. Zitieren Link zu diesem Kommentar
MurdocX 949 Geschrieben 28. November 2016 Melden Teilen Geschrieben 28. November 2016 (bearbeitet) function New-FSWEvent { param ( # Enter the root path you want to monitor. [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [String] $Folder, # You can enter a wildcard filter here. [Parameter(ValueFromPipelineByPropertyName)] [String] $Filter = '*.*', [Parameter(ValueFromPipelineByPropertyName)] [Switch] $IncludeSubdirectories = $false ) # In the following line, you can change 'IncludeSubdirectories to $true if required. $fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{IncludeSubdirectories = $IncludeSubdirectories;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'} # Here, all three events are registerd. You need only subscribe to events that you need: Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated Write-Host "The file '$name' was $changeType at $timeStamp" -fore green Out-File -FilePath C:\Users\Testuser\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp" } Register-ObjectEvent $fsw Deleted -SourceIdentifier FileDeleted -Action { $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated Write-Host "The file '$name' was $changeType at $timeStamp" -fore red Out-File -FilePath C:\Users\Testuser\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp" } Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action { $name = $Event.SourceEventArgs.Name $changeType = $Event.SourceEventArgs.ChangeType $timeStamp = $Event.TimeGenerated Write-Host "The file '$name' was $changeType at $timeStamp" -fore white Out-File -FilePath C:\Users\Testuser\Desktop\Outlog.txt -Append -InputObject "The file '$name' was $changeType at $timeStamp" } } Ich kann mich blub nur anschließen. Ein Skript dauert auch für geübte durchaus etwas länger bis es fehlerfrei funktioniert ;-) Um dir zu helfen, habe ich deinen angegebenen Quellcode in eine Funktion gepackt, die du so oft wie gewünscht aufrufen kannst. Nun brauchst du nur noch eine Schleife die die richtigen Funktionsaufrufe übernimmt. EDIT: Ich habe dieses Skript nicht getestet, sondern nur deinen Quellcode verpackt. bearbeitet 28. November 2016 von MurdocX Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.