Hallo
Meine Powershell Kentnisse sind leider auch noch nicht so gut.
Goolge und co sind da meine meisten anlaufstellen ;-)
Ich habe hier ein Script das auch soweit funktioniert.
Nur weiß ich nicht wie ich das hinbekommen soll, daß man auch mehrere Pfade in dem Script Überprüfen könnte.
$Path = "c:\tmp" $FileFilter = '*.cfg' $IncludeSubfolders = $true $AttributeFilter = [IO.NotifyFilters]::FileName, [IO.NotifyFilters]::LastWrite $ChangeTypes = [System.IO.WatcherChangeTypes]::Changed $Timeout = 1000 function Invoke-SomeAction { param ( [Parameter(Mandatory)] [System.IO.WaitForChangedResult] $ChangeInformation ) Write-Warning 'Änderung erkannt:' $ChangeInformation | Out-String | Write-Host -ForegroundColor DarkYellow # send email Send-MailMessage –To "Email@domain.com" `–Subject ("ACHTUNG CFG DATEI " + $ChangeInformation.Name ,"GEÄNDERT!")`–Body ("CFG geändert $path\" + $ChangeInformation.Name)`–SmtpServer "smtp.com" `–From "noreplay@domain.com" ` -encoding ([System.Text.Encoding]::UTF8) } try { $watcher = New-Object -TypeName IO.FileSystemWatcher -ArgumentList $Path, $FileFilter -Property @{ IncludeSubdirectories = $IncludeSubfolders NotifyFilter = $AttributeFilter } do { $result = $watcher.WaitForChanged($ChangeTypes, $Timeout) if ($result.TimedOut) { continue } Invoke-SomeAction -Change $result } while ($true) } finally { $watcher.Dispose() Write-Warning 'FileSystemWatcher removed.' }
bisher habe ich erfahren, daß ich da Script so abändern könnte
$Path = $args[0]
Dann könnte ich das Script mit c:\test\Check.ps1 c:\tmp\ aufrufen. Nur dann würde ich ja bei 10 Pfaden auch 10 Programme laufen haben.
Ist es möglich das in das Script zu implementieren, damit man nur ein script am laufen hat aber mehrere Pfade überprüft?!