$folder = 'C:\scripts\test'
$filter = '*.*'
$fsw = New-Object IO.FileSystemWatcher $folder, $filter -Property @{
IncludeSubdirectories = $true
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
$onCreated = Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
# define the destination inside this script block
$destination = 'H:\Office Documents\text_move'
$createdFile = $Event.SourceEventArgs.FullPath
$createdFileName = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$createdFileTimeStamp = $Event.TimeGenerated
Write-Output "Trigger: Get-Date -Format 'u'" >> c:\scripts\logWatcher.txt
$existingFileName = Join-Path -Path $destination -ChildPath $createdFileName
if(Test-Path($existingFileName)) {
Write-Output "File: '$createdFileName' exists at: $destination - renaming existing file first" >> c:\scripts\logWatcher.txt
$newFileName = "$(get-date -Format 'yyyyMMdd')$createdFileName"
Rename-Item -Path $existingFileName -NewName $newFileName
}
Move-Item $createdFile -Destination $existingFileName -verbose
Write-Output "File: '$createdFileName' State: $changeType At: $createdFileTimeStamp" >> c:\scripts\logWatcher.txt
Start-Process https://website.blah/app.jnlp
}
$onCreated
Isso é o que acabei usando para fazer funcionar. Eu tive muitos erros variáveis, assim como muitos problemas com os quais eu precisava de certas coisas. Eu tive ajuda para escrevê-lo, bem como sugestões. O registro do observador ajudou muito porque me deu um ponto de referência para o que eu estava fazendo e o que estava acontecendo.
@echo off
powershell.exe -noexit -file "c:\scripts\move-filefinal.ps1"
Em um arquivo de lote, posso executá-lo sem parar em segundo plano, se alguém tiver uma sugestão melhor para isso, sou todo ouvidos.
Obrigado pela ajuda e me empurrando na direção certa, acho que isso foi muito mais difícil do que precisava ser.