我正在尝试创建一个PowerShell脚本,该脚本将充当日志文件的观察程序并指出日志文件中的更改。
不知何故,我无法实现指出更改,我尝试了以下代码,在这里我尝试在最后 15 分钟内获取更改,但它不起作用:
$File = "C:Program Files (x86)Apache Software FoundationApache2.2logserror.log"
$Action = 'awk ' $0 >= from' from=$(date -u -d -15min "+####<%d-%b-%Y %H:%M:%S o'clock GMT>") error.log'
$global:FileChanged = $false
function Wait-FileChange {
param(
[string]$File,
[string]$Action
)
$FilePath = Split-Path $File -Parent
$FileName = Split-Path $File -Leaf
$ScriptBlock = [scriptblock]::Create($Action)
$Watcher = New-Object IO.FileSystemWatcher $FilePath, $FileName -Property @{
IncludeSubdirectories = $false
EnableRaisingEvents = $true
}
$onChange = Register-ObjectEvent $Watcher Changed -Action {$global:FileChanged = $true}
while ($global:FileChanged -eq $false){
Start-Sleep -Milliseconds 100
}
& $ScriptBlock
Unregister-Event -SubscriptionId $onChange.Id
}
Wait-FileChange -File $File -Action $Action
后来我用以下代码更改了$Action
部分,它将获取最后 5 行,我让它工作正常
$Action = 'Get-Content "C:Program Files (x86)Apache Software FoundationApache2.2logserror.log" | Select-Object -last 5 '
但我的目标是观察更改并打印所做的更改。谁能帮我解决这个问题,任何帮助都是有价值的。
但我的目标是观察更改并打印更改 䍬。
您是否知道Get-Content
cmdlet 具有-Wait
开关:
Get-Content $File -Wait