このクエリをpowershellで実行しようとしていますが、現在の$MonitorFolder
を\\\vavm\CINICO\Incoming
として実行すると、フォルダにファイルを追加するときにクエリが機能しません。 $MonitorFolder
の変数をC:\Users\RickG\Desktop\Test Reports
に変更すると、ファイルをフォルダに追加するときにコードが正常に動作します。では、ファイルがフォルダに追加されたときに、どのようにして\\vavm\CINICO\Incoming
のパスを監視しますか?ここでファイルのネットワークフォルダを監視します
はフォルダをチェックするコードの私の最初の部分の抜粋です:
$MonitorFolder = "\\vavm\CINICO\Incoming"
$MonitorStopFile = "monitor.die"
$smtpServer = "mail.test.org"
$smtpFrom = "[email protected]"
$smtpTo = "[email protected]"
$SourceID = "MonitorFiles"
$smtpSubject = "New file arrived in $($MonitorFolder)"
$Query = @"
SELECT * FROM __InstanceCreationEvent WITHIN 10
WHERE targetInstance ISA 'Cim_DirectoryContainsFile'
AND targetInstance.GroupComponent = 'Win32_Directory.Name="$($MonitorFolder.Replace("\", "\\\\"))"'
"@
SOLUTION:
$MonitorFolder = "\\vavm\CINICO\incoming"
$MonitorStopFile = "monitor.die"
$smtpServer = "mail.test.org"
$smtpFrom = "[email protected]"
$smtpTo = "[email protected]"
$smtpSubject = "New file arrived in $($MonitorFolder)"
$SourceID = "MonitorFiles"
$IncomingFiles = Get-ChildItem $MonitorFolder
$smtp = New-Object -TypeName "Net.Mail.SmtpClient" -ArgumentList $smtpServer
$watcher = New-Object System.IO.FileSystemWatcher $MonitorFolder
#Files only. Default is files + directory
$watcher.NotifyFilter = [System.IO.NotifyFilters]'FileName,LastWrite'
$newFileSubscription = Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier NewFileCreated -Action {
Write-Host "New file named '$($Event.SourceEventArgs.Name)' arrived in $($MonitorFolder)"
$smtpBody += "`n[$(Get-Date -Format HH:mm:ss)]`tNew file named '$($Event.SourceEventArgs.Name)' arrived in $($MonitorFolder)"
if($Event.SourceEventArgs.Name -eq $MonitorStopFile) {
Write-Host "Monitoring stopped"
#Stop monitoring
Unregister-Event -SubscriptionId $newFileSubscription.Id
#Dispose FileSystemWatcher
$watcher.Dispose()
}
$smtp.Send($smtpFrom, $smtpTo, $smtpSubject, $smtpBody)
}
「動作しない」とはどういう意味ですか?間違いはありますか? –
サンプルが不完全です。あなたはWMI-eventsubscriberを登録しません –
wmiイベントをフルコードで登録しますので、ちょうどスニペットです – SikRikDaRula