哟,你好,我需要一点帮助。越来越沮丧。
我需要监视服务器上的文件夹。服务器上的该文件夹包含多个子文件夹。从这些子文件夹中,我需要监视一个名为“发送”的子文件夹,如果有一些文件超过一小时,我需要触发传感器关闭。
使用此 powershell 脚本:
$rootFolder = "D:\AS2\data"
$subfolders = Get-ChildItem -Path $rootFolder -Directory
$maxFileAge = (获取日期).AddMinutes(-60)
$退出代码=0
foreach($子文件夹中的$子文件夹){
$sendFolder = Join-Path -Path $subfolder.FullName -ChildPath“发送”
$oldFiles = Get-ChildItem -Path $sendFolder -File | Where-Object { $_.LastWriteTime -lt $maxFileAge }
if ($oldFiles.Count -gt 0) {
$退出代码=1
写主机“V podsložce $($sendFolder) byly nalezeny soubory starší než 60 分钟。”
}
}
退出$exitCode
基本上,如果有任何文件超过 60 分钟,则将 exitCode 设置为 1,但是当我在探针设备上使用 EXE/脚本使用此自定义传感器时,它不起作用。我也尝试过 EXE/Script Advanced。
运行该传感器总是以:
结束响应格式不正确:“( )”(代码:PE132)
r/prtg - 监控主文件夹/子文件夹/文件夹/文件级别的文件年龄
r/prtg - 监控主文件夹/子文件夹/文件夹/文件级别的文件年龄
我无法让它工作:'(。在 Paessler 的知识库中浏览了几个主题,但仍然找不到解决方案。
请问您能帮助我进行脚本、传感器设置或其他我需要的工作吗?或者使用另一种方法来解决对文件夹、子文件夹和子文件夹中的文件夹的文件查找。
更新: 我尝试更改 powershell 脚本,因为我发现了有关给出正确响应代码的新信息,但最终得到“响应格式不正确:“( )”(代码:PE132)”。下面的脚本。请问大家有什么想法吗?
$rootFolder = "D:\AS2\data"
$subfolders = Get-ChildItem -Path $rootFolder -Directory
$maxFileAge = (获取日期).AddMinutes(-60)
$退出代码=0
$错误检测=$假
foreach($子文件夹中的$子文件夹){
$sendFolder = Join-Path -Path $subfolder.FullName -ChildPath“发送”
$oldFiles = Get-ChildItem -Path $sendFolder -File | Where-Object { $_.LastWriteTime -lt $maxFileAge }
if ($oldFiles.Count -gt 0 -and !$errorDetected) { $exitCode = 1 $errorDetected = $true }
if ($oldFiles.Count -eq 0) { $exitCode = 0 $errorDetected = $false }}
if ($errorCode -eq 0) {写入输出“0:OK”}
if ($errorCode -eq 1) {写入输出“1:Down”}
退出
我几乎尝试了我读过、尝试过、调试过的所有内容。我现在没有任何想法。
嗯,看起来我在结果脚本的末尾写错了。我没有使用“$exitCode”,而是使用了“$errorCode”,最终导致错误。会测试几次以确认没问题。
好吧,这就是按要求工作的最终脚本。
$rootFolder = "D:\AS2\data"
$subfolders = Get-ChildItem -Path $rootFolder -Directory
$maxFileAge = (获取日期).AddMinutes(-60)
$退出代码 = 0 $错误检测= $假
foreach($子文件夹中的$子文件夹){ $sendFolder = Join-Path -Path $subfolder.FullName -ChildPath "发送"
$oldFiles = Get-ChildItem -Path $sendFolder -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddMinutes(-60) }
if ($oldFiles.Count -gt 0 -and !$errorDetected) {
$exitCode = 1
$errorDetected = $true
}
}
if ($exitCode -eq 0) {写入输出“0:OK”} if ($exitCode -eq 1) {写入输出“1:Down”} 退出