监控共享文件变更同步至远程剪贴板的PowerShell脚本问题
问题分析与脚本修正
你的脚本存在语法和逻辑错误,导致无法正确检测文件修改时间,以下是问题点和修正方案:
- 初始化
$lastModifiedDate时,select -Property LastWriteTime返回的是包含属性的对象,而非直接的DateTime值,无法直接用于时间对比 for()循环缺少有效循环逻辑,应改用无限循环并添加延迟避免占用过多资源Get-ChildItem -Path $copypath $_.LastWriteTime语法错误,$_在此处无上下文,且错误传递参数- 时间对比的变量逻辑混乱,未正确维护上次修改时间的状态
修正后的脚本:
$copypath = "sharedrive\copy.txt" # 直接获取初始的LastWriteTime DateTime值 $lastModifiedDate = (Get-Item $copypath).LastWriteTime # 无限循环监控,添加1秒延迟降低资源消耗 while($true) { # 获取当前文件的最后修改时间 $currentModifiedDate = (Get-Item $copypath).LastWriteTime # 对比时间是否变化 if ($currentModifiedDate -ne $lastModifiedDate) { # 读取文件内容并设置到剪贴板 Get-Content $copypath | Set-Clipboard # 更新上次修改时间为当前时间 $lastModifiedDate = $currentModifiedDate Write-Host "剪贴板已更新" } # 每秒检查一次,可根据需求调整间隔 Start-Sleep -Seconds 1 }
补充说明:
- 共享驱动器的文件修改时间同步可能存在延迟,若出现误判可适当延长检查间隔
- 若文件内容较大,可使用
Get-Content -Raw一次性读取全部内容,提升处理效率 - 如需应对文件访问异常,可添加
try/catch块捕获错误
内容的提问来源于stack exchange,提问作者Bill Putt
相关产品推荐
相关产品推荐

