プログラミング学習サイト

プログラミングの学習を開始される方を対象としたプログラミング入門サイトです。

ファイルの配置を検知するPowershell

Powershell概要

minegishirei.hatenablog.com

ファイルが置かれたら起動するスクリプトpowershell学習サイト】

power automateなどはファイルがおかれた瞬間/メール配信された瞬間に起動する仕組みがあります。

同様のことをpowershellで実現するにはどうすればよいのでしょうか。

ファイルが置かれたら起動するスクリプト

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\temp"
$watcher.Filter = "*.xml"
Register-ObjectEvent -InputObject $watcher -SourceIdentifier mywatch -EventName Created -Action {
    Write-Output "error" | Out-File -FilePath "C:\temp\error.log" -Encoding Default -append
}

上記のpowershellスクリプトを「grep_rectangle_v2.ps1」と保存して実行してみましょう。

次のように出力されれば成功です。

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
1      mywatch                         NotStarted    False                                ...

これで上記のコマンドを実行したpowershellコンソール画面が存在し続ける限りはチェックし続ける仕組みが完成しました

また、監視対象のフォルダーは共有ディレクトでも動くので、サーバーから出力されたファイルの監視も可能になります。

動作確認

C:\temp(cドライブ配下のtempフォルダー)にxmlファイルを配置してみましょう。

同じ"C:\temp配下にerror.logが出力されるはずです。

登録されているか確認

登録されているか確認するには以下のコマンドを打ちます。

Get-EventSubscriber

登録解除時間軸:2022/09/19 ~ NOW

時間軸:2022/09/19 ~ NOW

登録を解除するには以下のコマンドを打ちましょう。

Unregister-Event -SourceIdentifier mywatch

備考

title:ファイルが置かれたら起動するスクリプトpowershell学習サイト】

description:powerautomateなどはファイルがおかれた瞬間/メール配信された瞬間に起動する仕組みがあります。同様のことをpowershellで実現するにはどうすればよいのでしょうか

page:https://minegishirei.hatenablog.com/entry/2024/05/21/120225