みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
みなさんこんにちは、お世話になります。
当方win10とwin7の環境で、FM16とFMServerの環境です。
クライアントは6台です。
FileMakerで勤怠管理を行いたいと考えております。
そこで、FileMakerはクライアントPCのシステムログを取得できるのでしょうか?
PCの起動・シャットダウンのログを取得できれば、出勤・退勤のタイムスタンプにして、
勤務表として活用できないかなと考えております。
詳しい方がおりましたらよろしくおねがいします。
Offline
取れないことはないでしょうが。
システムログを取得していくと、職員の動きを監視する事になります。就業中は、職務への専念義務がありますので、強いて言えば監視されても仕方ないのですが、それに寄って反感を受ける可能性もあります。
また、自動起動・終了されたり、強制終了、また、アップデートによる自動終了、時間のかかる処理をやらせておいて帰宅、などへの対応ができませんね。
私は、PCの電源は、休日前にしか切らない主義なので、休日明けには自動起動させています。
Offline
取れないことはないでしょうが。
システムログを取得していくと、職員の動きを監視する事になります。就業中は、職務への専念義務がありますので、強いて言えば監視されても仕方ないのですが、それに寄って反感を受ける可能性もあります。
また、自動起動・終了されたり、強制終了、また、アップデートによる自動終了、時間のかかる処理をやらせておいて帰宅、などへの対応ができませんね。
私は、PCの電源は、休日前にしか切らない主義なので、休日明けには自動起動させています。
shin様アドバイスありがとうございます。
運用にあたっては当然社内のルールを決めて対応しないといけませんね。
PC電源はよほどのことがないかぎり自動起動等の対応はしません。(また、自動起動のログが残るのでは?)
日々の電源も節電のため、必ず切っております。
小生は管理職のため、課員の勤怠管理が必須です。
ログインアカウントとユーザー権限により、課員個人のレコードアクセス権を設定し課員同士のレコードは検索できないようにするところまでは成功しております。
今は、課員がシステムログを開き、起動とシャットダウンの時間を検索し勤務表(紙)に記入しております。
これを何とかFileMakerで管理できないものかと思案中です。
PCの監視問題があるためここに記載できないのであれば諦めます。
Offline
イベントビューワーでログを見ているのでしょうか。
%SystemRoot%\System32\winevt\Logs内の System.evtx がシステムログですので、これを適当な所にコピーします。Suffix も適当に変更しておきます。
これをインポートすれば数千〜数万件のログが取り込めますので、その中から必要な行を取り出せばいいです。イベントID は、6005 起動、6006 シャットダウン、6008 正常ではない終了。7001 起動(ログオン)、7002 シャットダウン を抽出すれば十分かと。
Offline
Event を送信 [「aevt」; 「odoc」;
"powershell -windowstyle hidden -Command " & Quote ( "Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))}|select TimeWritten,EventID -First 10 |clip" )
]
Event を送信 で上記のように実行すると、前日以降の 起動・終了,ログイン・ログアウト のログ(下記)がクリップボードに入ります。
TimeWritten EventID
----------- -------
2018/06/04 8:46:00 7001
2018/06/04 8:45:59 6005
プラグインを使うと変数に直接戻り値の取得が出来ます。
変数を設定 [$Result; 値:SMPS_Exe("Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))}|select TimeWritten,EventID -First 10")
SMPS_Exe - ScriptMakerPS | FileMaker Plugin for Windows :
https://sites.google.com/site/scriptmak … n/smps_exe
Offline
Event を送信 [「aevt」; 「odoc」;
"powershell -windowstyle hidden -Command " & Quote ( "Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))}|select TimeWritten,EventID -First 10 |clip" )
]Event を送信 で上記のように実行すると、前日以降の 起動・終了,ログイン・ログアウト のログ(下記)がクリップボードに入ります。
TimeWritten EventID
----------- -------
2018/06/04 8:46:00 7001
2018/06/04 8:45:59 6005プラグインを使うと変数に直接戻り値の取得が出来ます。
変数を設定 [$Result; 値:SMPS_Exe("Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))}|select TimeWritten,EventID -First 10")
SMPS_Exe - ScriptMakerPS | FileMaker Plugin for Windows :
https://sites.google.com/site/scriptmak … n/smps_exe
色々アドバイスいただきありがとうございます。
Eventを送信のスクリプトを実行したことがないのでとりあえず、コピペして実行してみましたが、エラーになりました。
ファイル「[「aevt」:]」が見つからないため処理がを完了できませんと出てしまいます。
なにか記述に間違いがあるのでしょうか?
Offline
「Event を送信」の計算に以下を設定します。
"powershell -windowstyle hidden -Command " & Quote ( "Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))}|select TimeWritten,EventID -First 10 |clip"
Offline
「Event を送信」の計算に以下を設定します。
"powershell -windowstyle hidden -Command " & Quote ( "Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))}|select TimeWritten,EventID -First 10 |clip"
何度もすいません。
()の数が合っていないと蹴られてしまいます。
Offline
あ~! 最後の )が抜けていました...。
"powershell -windowstyle hidden -Command " & Quote ( "Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))}|select TimeWritten,EventID -First 10 |clip" )
Offline
qb_dpさんありがとうございます。
見事にクリップボードに張り付きました。
感激です!
この取得したログは、直前の2件だけ表示されるようになっているのでしょうか?
グローバルフィールドでいつからいつまで取得するとか指定できたりできますか?
また、取得後のプラグインから変数に設定とありますが、プラグインが勉強不足でわかりません。
もしよかったら教えてもらえますか?
Offline
-And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))
上記の箇所を以下のようにすると、期間を指定してログを取得することができます。
-And ($_.TimeWritten -ge [DateTime]'2018/06/04 00:00:00')-And ($_.TimeWritten -le [DateTime]'2018/06/04 23:59:59')
スクリプトの最後に -First 10 で件数を指定しています。 10位上のログを取得したい場合は、数字を変更するか、 -First 10 を削除します。
プラグインは、FileMakerに機能を追加するモノです。以下を使用すると、実行したPowerShellの戻り値をクリップボードでなく、直接、変数やフィールドに取得できます。
ScriptMakerPS | FileMaker Plugin for Windows :
https://sites.google.com/site/scriptmak … n/smps_exe
Offline
-And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))
上記の箇所を以下のようにすると、期間を指定してログを取得することができます。
-And ($_.TimeWritten -ge [DateTime]'2018/06/04 00:00:00')-And ($_.TimeWritten -le [DateTime]'2018/06/04 23:59:59')スクリプトの最後に -First 10 で件数を指定しています。 10位上のログを取得したい場合は、数字を変更するか、 -First 10 を削除します。
プラグインは、FileMakerに機能を追加するモノです。以下を使用すると、実行したPowerShellの戻り値をクリップボードでなく、直接、変数やフィールドに取得できます。
ScriptMakerPS | FileMaker Plugin for Windows :
https://sites.google.com/site/scriptmak … n/smps_exe
度々ありがとうございます。
-And ($_.TimeWritten -ge [DateTime]'2018/06/04 00:00:00')-And ($_.TimeWritten -le [DateTime]'2018/06/04 23:59:59')
をコピペしてみましたがうまくいきませんでした。
'2018/06/04 00:00:00'←ここの部分はグローバルフィールドのタイムスタンプに代用できますか?
とりあえずプラグインは諦めました。
Offline
'2018/06/04 00:00:00'←ここの部分はグローバルフィールドのタイムスタンプに代用できますか?
こんな感じで。
変数を設定 [$command; 値:
Let([
PS="Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime]'{Start_time_stamp}')-And ($_.TimeWritten -le [DateTime]'{End_time_stamp}')}|select TimeWritten,EventID -First 10 |clip"
];
Substitute ( PS ;
["{Start_time_stamp}" ; GLOBAL::Start_time_stamp]
; ["{End_time_stamp}" ; GLOBAL::End_time_stamp] )
)
]
Event を送信 [「aevt」; 「odoc」; "powershell -windowstyle hidden -Command " & Quote ( $command )]
Offline
ご連絡遅くなりました。
方法はあるようですが、ちょっと難しそうですね。。。
グローバルフィールドの件は検討します。
ところで、
Windows10の環境ではうまくいったのですが、
Windows7だとクリップボードにうまくはりつきません。
なにか記述の変更が必要でしょうか?
Offline
'2018/06/04 00:00:00'←ここの部分はグローバルフィールドのタイムスタンプに代用できますか?
こんな感じで。
変数を設定 [$command; 値:
Let([
PS="Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime]'{Start_time_stamp}')-And ($_.TimeWritten -le [DateTime]'{End_time_stamp}')}|select TimeWritten,EventID -First 10 |clip"
];
Substitute ( PS ;
["{Start_time_stamp}" ; GLOBAL::Start_time_stamp]
; ["{End_time_stamp}" ; GLOBAL::End_time_stamp] )
)
]
Event を送信 [「aevt」; 「odoc」; "powershell -windowstyle hidden -Command " & Quote ( $command )]
qb_dp様
また壁にぶつかってしまいました。。。
ログを取得する際、どのPCで取得したかの記録を保持しないといけないと気づきました。
当社ではクライアントPCに固有の名前をつけているのですが、それも同時に取得できますか?
また、Windows7での取得ができていません。なにか問題あるでしょうか?
Offline
コンピューター名は、以下で取得出来ます。
(Get-WmiObject Win32_ComputerSystemProduct).Name
>Windows7での取得ができていません...
以下のコマンドをPowerShellのコンソールで実行を試して見てください。
Get-EventLog -LogName System |where-object{$_.EventID -in (6005, 6006,7001,7002) -And ($_.TimeWritten -ge [DateTime](Get-Date).AddDays(-1))}|select TimeWritten,EventID -First 10
以下のようになれば、コマンドは実行出来ています。
Offline
横から失礼します。 ちょっと気になったのですが…
> コンピューター名は、以下で取得出来ます。
> (Get-WmiObject Win32_ComputerSystemProduct).Name
ここでコンピューター名は製品機種名だから、同型機種使用のクライアントだとマシン識別が出来ない?
なので、 .Name → .IdentifyingNumber と ID番号へ替えた方が吉かも?
でも、ID番号だと、ログの識別時に判り難く不便か?
Offline
Hiroさんありがとうございます。以下でした...。
(Get-WmiObject -Class Win32_ComputerSystem -Property Name).Name
Offline
本件,参考にさせていただきました。
Win7の件は解決済みかもしれませんが,「$_.EventID -in (6005,6006,7001,7002)」のところを「$_.EventId -eq 6005 -or $_.eventID -eq 6006 -or ....」と
だらだらと4つ並べることで,クリップボードへの取得ができました。
ご参考になれば幸いです。
本件,参考にさせていただきました。
Win7の件は解決済みかもしれませんが,「$_.EventID -in (6005,6006,7001,7002)」のところを「$_.EventId -eq 6005 -or $_.eventID -eq 6006 -or ....」と
だらだらと4つ並べることで,クリップボードへの取得ができました。
ご参考になれば幸いです。
-in が使えるのが、PowerShell3.0以降のようです。
Offline
FIleMaker 18 が発売されましたが、新機能でログが取れるとか...
Offline
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 624.06 KiB (Peak: 656.97 KiB) ]