PowerShellにてフォルダ監視
質問
2019年5月14日火曜日 5:36
Windows10 64bitの環境で共有サーバにある複数のフォルダの監視をPowershellで行いたいです。
共有フォルダにファイルが新規作成されたら、ローカルのドキュメントフォルダにファイルがコピーされるようなものです。(最終的には削除と変更も)
監視は常時行っていて欲しいです。
どこのフォルダのなんてファイル名が新規作成されたかもわかるようにしたいです(抽象的で申し訳ございません)
PowerShellをほとんど触ったことがなく最近毎日ネットで勉強していますが、今回の件で検討も尽きません
何か分かる方いらっしゃいましたら宜しくお願いします。
すべての返信 (3)
2019年5月14日火曜日 6:20 ✅回答済み
チャブーンです。
この件ですが、フォルダー内にファイルが新規作成されたら、何か動作をさせたい、ということであれば、Register-WMIEventを使って、"from __instancecreationevent"WQLクエリーを使ったファイル監視を行わせる方法がいいと思います。したのページにサンプルがありますが、-Actionオプションで「ファイルが追加されたら何をやるか」を指定します。
https://blogs.msdn.microsoft.com/wmi/2009/02/26/wmi-event-gt-windows-event-on-file-create/
うえの動作のしくみについては、したのページでScripto Guyが語ってくれています。参考になるでしょう。
https://devblogs.microsoft.com/scripting/use-powershell-to-monitor-for-the-creation-of-new-files/
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
2019年5月14日火曜日 8:18
フォーラムに投稿くださいましてありがとうございます。
チャブーン様の答えはとても良いです。
また、“Start-FileSystemWatcher” コマンドレットを使用しても共有フォルダーの変更を監視することもできます。
ファイルシステムモジュールをインストールしてコマンドを入力してみてください。
PS C:\ Windows \ system32> import-module filesystem
ダウンロード リンク:https://archive.codeplex.com/?p=psfilesystem
例を参考して"get-help Start-FileSystemWatcher -examples"を入力してください。
例:Start-FileSystemWatcher \MyServer\MyShare -do {
$subject = "$($eventArgs.ChangeType): $($eventArgs.FullPath)"
$body = (Get-Content $eventArgs.FullPath -errorAction SilentlyContinue | Out-String)
$email = @{
From = 'Me@MyCompany.com'
To = 'MyBoss@MyCompany.com'
SmtpServer = 'SmtpHost'
Subject = $subject
}
if ($body) { $email;=@{Body = $body }}
Send-MailMessage @email
}
# Watches \MyServer\MyShare and sends an email with the content of files as they change
下記のリンクでも方法がありますのでご参考お願い致します。
https://mcpmag.com/Articles/2015/09/24/Changes-to-a-Folder-Using-PowerShell.aspx?Page=2
少しでも参考になれば幸いです。
Please remember to mark the replies as answers if they help.
If you have feedback for TechNet Subscriber Support, contact tnmff@microsoft.com.
2019年5月23日木曜日 0:40
返信遅くなり申し訳ありません。
上記の方法で試してみます!
お回答ありがとうございました!