Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ### CONNECTING MySql.Data.dll LIBRARY
  2. Add-Type -Path 'C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.19\Assemblies\v4.5.2\MySql.Data.dll'
  3.  
  4. ### SET FOLDER TO WATCH + FILES TO WATCH + SUBFOLDERS YES/NO
  5. $watcher = New-Object System.IO.FileSystemWatcher
  6. $watcher.Path = "D:\source"
  7. $watcher.Filter = "*.pdf"
  8. $watcher.IncludeSubdirectories = $true
  9. $watcher.EnableRaisingEvents = $true  
  10.  
  11. ### DEFINE ACTIONS AFTER AN EVENT IS DETECTED
  12. $action_create = { $Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString = 'Server=127.0.0.1; Port=3306; Database=test; Uid=root; Pwd=123123dan;' }
  13.     $sql = New-Object MySql.Data.MySqlClient.MySqlCommand
  14.     $sql.Connection = $Connection
  15.     $Connection.Open()
  16.     $pattern = "[ \w-,]+(\.[\w]+)+"
  17.     $name = [regex]::match($Event.SourceEventArgs.Name, $pattern)
  18.     $path = [regex]::escape($Event.SourceEventArgs.FullPath)
  19.     $changeType = $Event.SourceEventArgs.ChangeType
  20.     $sql.CommandText = "INSERT INTO conclusion_files (filename, filepath) VALUES ('$name','$path')"
  21.     $sql.ExecuteNonQuery()
  22.     $sql.CommandText = "INSERT INTO conclusion_logs (new_filepath, action_name) VALUES ('$path',(SELECT ID FROM action_types WHERE action_name LIKE '$changeType'))"
  23.     $sql.ExecuteNonQuery()
  24.     Write-Host "$(Get-Date), $changeType, $old_path, $path"
  25.     $Connection.Close()
  26. }    
  27.  
  28. $action_delete = { $Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString = 'Server=127.0.0.1; Port=3306; Database=test; Uid=root; Pwd=123123dan;' }
  29.     $sql = New-Object MySql.Data.MySqlClient.MySqlCommand
  30.     $sql.Connection = $Connection
  31.     $Connection.Open()
  32.     $path = [regex]::escape($Event.SourceEventArgs.FullPath)
  33.     $changeType = $Event.SourceEventArgs.ChangeType
  34.     $sql.CommandText = "DELETE FROM conclusion_files WHERE filepath = '$path'"
  35.     $sql.ExecuteNonQuery()
  36.     $sql.CommandText = "INSERT INTO conclusion_logs (old_filepath, action_name) VALUES ('$path',(SELECT ID FROM action_types WHERE action_name LIKE '$changeType'))"
  37.     $sql.ExecuteNonQuery()
  38.     Write-Host "$(Get-Date), $changeType, $old_path, $path"
  39.     $Connection.Close()
  40. }    
  41.  
  42. $action_rename = { $Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString = 'Server=127.0.0.1; Port=3306; Database=test; Uid=root; Pwd=123123dan;' }
  43.     $sql = New-Object MySql.Data.MySqlClient.MySqlCommand
  44.     $sql.Connection = $Connection
  45.     $Connection.Open()
  46.     $pattern = "[ \w-,]+(\.[\w]+)+"
  47.     $name = [regex]::match($Event.SourceEventArgs.Name, $pattern)
  48.     $path = [regex]::escape($Event.SourceEventArgs.FullPath)
  49.     $old_path = [regex]::escape($Event.SourceEventArgs.OldFullPath)
  50.     $changeType = $Event.SourceEventArgs.ChangeType
  51.     $sql.CommandText = "UPDATE conclusion_files SET filename = '$name', filepath = '$path'  WHERE filepath = '$old_path'"
  52.     $sql.ExecuteNonQuery()
  53.     $sql.CommandText = "INSERT INTO conclusion_logs (old_filepath, new_filepath, action_name) VALUES ('$old_path', '$path', (SELECT ID FROM action_types WHERE action_name LIKE '$changeType'))"
  54.     $sql.ExecuteNonQuery()
  55.     Write-Host "$(Get-Date), $changeType, $old_path, $path"
  56.     $Connection.Close()
  57. }    
  58.  
  59. $action_change = { $Connection = [MySql.Data.MySqlClient.MySqlConnection]@{ConnectionString = 'Server=127.0.0.1; Port=3306; Database=test; Uid=root; Pwd=123123dan;' }
  60.     $sql = New-Object MySql.Data.MySqlClient.MySqlCommand
  61.     $sql.Connection = $Connection
  62.     $Connection.Open()
  63.     $path = [regex]::escape($Event.SourceEventArgs.FullPath)
  64.     $changeType = $Event.SourceEventArgs.ChangeType
  65.     $sql.CommandText = "UPDATE conclusion_files SET last_change = now() WHERE filepath = '$path'"
  66.     $sql.ExecuteNonQuery()
  67.     $sql.CommandText = "INSERT INTO conclusion_logs (old_filepath, action_name) VALUES ('$path', (SELECT ID FROM action_types WHERE action_name LIKE '$changeType'))"
  68.     $sql.ExecuteNonQuery()
  69.     Write-Host "$(Get-Date), $changeType, $old_path, $path"
  70.     $Connection.Close()
  71. }  
  72.  
  73. ### DECIDE WHICH EVENTS SHOULD BE WATCHED
  74. Register-ObjectEvent $watcher "Created" -Action $action_create
  75. Register-ObjectEvent $watcher "Deleted" -Action $action_delete
  76. Register-ObjectEvent $watcher "Renamed" -Action $action_rename
  77. Register-ObjectEvent $watcher "Changed" -Action $action_change
  78. while ($true) { sleep 5 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement