トップ回答者
PowerShellにてフォルダ監視

質問
-
Windows10 64bitの環境で共有サーバにある複数のフォルダの監視をPowershellで行いたいです。
共有フォルダにファイルが新規作成されたら、ローカルのドキュメントフォルダにファイルがコピーされるようなものです。(最終的には削除と変更も)
監視は常時行っていて欲しいです。
どこのフォルダのなんてファイル名が新規作成されたかもわかるようにしたいです(抽象的で申し訳ございません)PowerShellをほとんど触ったことがなく最近毎日ネットで勉強していますが、今回の件で検討も尽きません
何か分かる方いらっしゃいましたら宜しくお願いします。
- 編集済み Share_P0int_beginner 2019年5月14日 6:11
回答
-
チャブーンです。
この件ですが、フォルダー内にファイルが新規作成されたら、何か動作をさせたい、ということであれば、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/
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答としてマーク FarenaMicrosoft contingent staff, Moderator 2019年5月20日 7:57
- 回答としてマークされていない FarenaMicrosoft contingent staff, Moderator 2019年5月20日 7:57
- 回答の候補に設定 FarenaMicrosoft contingent staff, Moderator 2019年5月20日 7:57
- 回答としてマーク Share_P0int_beginner 2019年5月23日 0:39
すべての返信
-
チャブーンです。
この件ですが、フォルダー内にファイルが新規作成されたら、何か動作をさせたい、ということであれば、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/
フォーラムは有償サポートとは異なる「コミュニティ」です。フォーラムでご質問頂くにあたっての注意点 をご一読のうえ、お楽しみください。
- 回答としてマーク FarenaMicrosoft contingent staff, Moderator 2019年5月20日 7:57
- 回答としてマークされていない FarenaMicrosoft contingent staff, Moderator 2019年5月20日 7:57
- 回答の候補に設定 FarenaMicrosoft contingent staff, Moderator 2019年5月20日 7:57
- 回答としてマーク Share_P0int_beginner 2019年5月23日 0:39
-
フォーラムに投稿くださいましてありがとうございます。
チャブーン様の答えはとても良いです。
また、“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.