千家信息网

Powershell 之监控文件系统变化

发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,#region Import Assemblies#----------------------------------------------[void][Reflection.Assembly]:
千家信息网最后更新 2024年11月17日Powershell 之监控文件系统变化
#region Import Assemblies#----------------------------------------------[void][Reflection.Assembly]::Load("System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")[void][Reflection.Assembly]::Load("System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")[void][Reflection.Assembly]::Load("System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")[void][Reflection.Assembly]::Load("mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")[void][Reflection.Assembly]::Load("System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")[void][Reflection.Assembly]::Load("System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")[void][Reflection.Assembly]::Load("System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")#endregion Import Assemblies#设置监控路径$script:folder="C:\"$form=New-Object System.Windows.Forms.Form$form.FormBorderStyle="Fixed3D"$form.StartPosition = 'CenterScreen'$form.ClientSize="200,80"$form.Text="Monitor"$buttonStart=New-Object System.Windows.Forms.Button$buttonStart.Text="Start Watch"$buttonStart.Location="45,10"$buttonStart.add_click({start-watch})$buttonStart.Size="100,20"$buttonStop=New-Object System.Windows.Forms.Button$buttonStop.Text="Stop Watch"$buttonStop.Location="45,40"$buttonStop.add_click({stop-watch})$buttonStop.Size="100,20"$form.Controls.AddRange(@($buttonStart,$buttonStop))$script:watcher = New-Object System.IO.FileSystemWatcher $folder#开始执行监控function start-watch{    $NotifyFilters=New-Object System.IO.NotifyFilters    #$watcher.NotifyFilter="Size,LastWrite,LastAccess,CreationTime,Security"    $watcher.Filter = "*.*"    $watcher.InternalBufferSize = 65536    #是否包含子目录    $watcher.IncludeSubDirectories = $True    #是否触发事件,必须开启    $watcher.EnableRaisingEvents = $True    $watcher.SynchronizingObject = $form    $form.Text="Monitoring"    $buttonStart.Enabled=$false    #创建时触发    $watcher.add_Created({created})    $watcher.add_Changed({changed})    $watcher.add_Deleted({deleted})    $watcher.add_Renamed({renamed})}function msg($message){    [Windows.Forms.MessageBox]::Show($message)}# $_.changetype 获取操作类型# $_.fullpath   获取文件绝对路径function created(){    #创建文件    #自己编写处理逻辑    msg($_.fullpath)}function changed(){    #文件信息变更    #自己编写处理逻辑    msg($_.fullpath)}function deleted(){    #删除文件    #自己编写处理逻辑    msg($_.fullpath)}function renamed(){    #名称变更    #自己编写处理逻辑    msg($_.fullpath)}#停止监控function stop-watch{    $watcher.EnableRaisingEvents = $false    $form.Text="Monitor"    $buttonStart.Enabled=$true}$form.ShowDialog()



0