[已解决]PRTG 监视器:监控主文件夹/子文件夹/文件夹/文件级别的文件年龄

问题描述 投票:0回答:1

哟,你好,我需要一点帮助。越来越沮丧。

我需要监视服务器上的文件夹。服务器上的该文件夹包含多个子文件夹。从这些子文件夹中,我需要监视一个名为“发送”的子文件夹,如果有一些文件超过一小时,我需要触发传感器关闭。

使用此 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)

传感器设置如下: enter image description here

r/prtg - 监控主文件夹/子文件夹/文件夹/文件级别的文件年龄

还添加概述。 enter image description here

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”}

退出

我几乎尝试了我读过、尝试过、调试过的所有内容。我现在没有任何想法。

file directory prtg
1个回答
0
投票

嗯,看起来我在结果脚本的末尾写错了。我没有使用“$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”} 退出

© www.soinside.com 2019 - 2024. All rights reserved.