您的位置:首页 > 运维架构 > Shell

Powershell 之监控文件系统变化

2016-11-29 21:27 316 查看
#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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息