初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2018-06-04 10:38:17

shojin
Member

PCのログの取得

みなさんこんにちは、お世話になります。

当方win10とwin7の環境で、FM16とFMServerの環境です。
クライアントは6台です。

FileMakerで勤怠管理を行いたいと考えております。

そこで、FileMakerはクライアントPCのシステムログを取得できるのでしょうか?
PCの起動・シャットダウンのログを取得できれば、出勤・退勤のタイムスタンプにして、
勤務表として活用できないかなと考えております。

詳しい方がおりましたらよろしくおねがいします。

Offline

#2 2018-06-04 11:17:07

Shin
Member

Re: PCのログの取得

取れないことはないでしょうが。
システムログを取得していくと、職員の動きを監視する事になります。就業中は、職務への専念義務がありますので、強いて言えば監視されても仕方ないのですが、それに寄って反感を受ける可能性もあります。
また、自動起動・終了されたり、強制終了、また、アップデートによる自動終了、時間のかかる処理をやらせておいて帰宅、などへの対応ができませんね。
私は、PCの電源は、休日前にしか切らない主義なので、休日明けには自動起動させています。

Offline

#3 2018-06-04 15:09:50

shojin
Member

Re: PCのログの取得

Shin wrote:

取れないことはないでしょうが。
システムログを取得していくと、職員の動きを監視する事になります。就業中は、職務への専念義務がありますので、強いて言えば監視されても仕方ないのですが、それに寄って反感を受ける可能性もあります。
また、自動起動・終了されたり、強制終了、また、アップデートによる自動終了、時間のかかる処理をやらせておいて帰宅、などへの対応ができませんね。
私は、PCの電源は、休日前にしか切らない主義なので、休日明けには自動起動させています。


shin様アドバイスありがとうございます。

運用にあたっては当然社内のルールを決めて対応しないといけませんね。
PC電源はよほどのことがないかぎり自動起動等の対応はしません。(また、自動起動のログが残るのでは?)
日々の電源も節電のため、必ず切っております。
小生は管理職のため、課員の勤怠管理が必須です。
ログインアカウントとユーザー権限により、課員個人のレコードアクセス権を設定し課員同士のレコードは検索できないようにするところまでは成功しております。

今は、課員がシステムログを開き、起動とシャットダウンの時間を検索し勤務表(紙)に記入しております。
これを何とかFileMakerで管理できないものかと思案中です。

PCの監視問題があるためここに記載できないのであれば諦めます。

Offline

#4 2018-06-04 16:48:19

Shin
Member

Re: PCのログの取得

イベントビューワーでログを見ているのでしょうか。
%SystemRoot%\System32\winevt\Logs内の System.evtx がシステムログですので、これを適当な所にコピーします。Suffix も適当に変更しておきます。
これをインポートすれば数千〜数万件のログが取り込めますので、その中から必要な行を取り出せばいいです。イベントID は、6005 起動、6006 シャットダウン、6008 正常ではない終了。7001 起動(ログオン)、7002 シャットダウン を抽出すれば十分かと。

Offline

#5 2018-06-04 17:19:35

qb_dp
Member

Re: PCのログの取得

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

#6 2018-06-05 09:24:10

shojin
Member

Re: PCのログの取得

qb_dp wrote:

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

#7 2018-06-05 09:35:57

qb_dp
Member

Re: PCのログの取得

「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

#8 2018-06-05 09:46:10

shojin
Member

Re: PCのログの取得

qb_dp wrote:

「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

#9 2018-06-05 10:31:51

qb_dp
Member

Re: PCのログの取得

あ~! 最後の )が抜けていました...。

"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

#10 2018-06-05 11:23:06

shojin
Member

Re: PCのログの取得

qb_dpさんありがとうございます。

見事にクリップボードに張り付きました。
感激です!

この取得したログは、直前の2件だけ表示されるようになっているのでしょうか?
グローバルフィールドでいつからいつまで取得するとか指定できたりできますか?

また、取得後のプラグインから変数に設定とありますが、プラグインが勉強不足でわかりません。
もしよかったら教えてもらえますか?

Offline

#11 2018-06-05 16:21:33

qb_dp
Member

Re: PCのログの取得

-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

#12 2018-06-05 18:55:03

shojin
Member

Re: PCのログの取得

qb_dp wrote:

-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

#13 2018-06-06 13:16:05

qb_dp
Member

Re: PCのログの取得

'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

#14 2018-06-08 17:32:00

shojin
Member

Re: PCのログの取得

ご連絡遅くなりました。
方法はあるようですが、ちょっと難しそうですね。。。
グローバルフィールドの件は検討します。

ところで、
Windows10の環境ではうまくいったのですが、
Windows7だとクリップボードにうまくはりつきません。

なにか記述の変更が必要でしょうか?

Offline

#15 2018-06-12 10:57:32

shojin
Member

Re: PCのログの取得

qb_dp wrote:

'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

#16 2018-06-13 09:13:28

qb_dp
Member

Re: PCのログの取得

コンピューター名は、以下で取得出来ます。
(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

以下のようになれば、コマンドは実行出来ています。
bca903e0ef63dd4fc9b33fdd117368c5.png

Offline

#17 2018-06-13 12:11:22

Hiro
Member

Re: PCのログの取得

横から失礼します。 ちょっと気になったのですが…

> コンピューター名は、以下で取得出来ます。
> (Get-WmiObject Win32_ComputerSystemProduct).Name

ここでコンピューター名は製品機種名だから、同型機種使用のクライアントだとマシン識別が出来ない?
なので、  .Name   →   .IdentifyingNumber   と ID番号へ替えた方が吉かも?
でも、ID番号だと、ログの識別時に判り難く不便か?

Offline

#18 2018-06-13 13:10:21

qb_dp
Member

Re: PCのログの取得

Hiroさんありがとうございます。以下でした...。

(Get-WmiObject -Class Win32_ComputerSystem -Property Name).Name

Offline

#19 2019-05-22 14:55:20

masao
Guest

Re: PCのログの取得

本件,参考にさせていただきました。
Win7の件は解決済みかもしれませんが,「$_.EventID -in (6005,6006,7001,7002)」のところを「$_.EventId -eq 6005 -or $_.eventID -eq 6006 -or ....」と
だらだらと4つ並べることで,クリップボードへの取得ができました。
ご参考になれば幸いです。

#20 2019-05-22 16:50:16

qb_dp
Member

Re: PCのログの取得

masao wrote:

本件,参考にさせていただきました。
Win7の件は解決済みかもしれませんが,「$_.EventID -in (6005,6006,7001,7002)」のところを「$_.EventId -eq 6005 -or $_.eventID -eq 6006 -or ....」と
だらだらと4つ並べることで,クリップボードへの取得ができました。
ご参考になれば幸いです。

-in が使えるのが、PowerShell3.0以降のようです。

Offline

#21 2019-05-25 11:02:59

Shin
Member

Re: PCのログの取得

FIleMaker 18 が発売されましたが、新機能でログが取れるとか...

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 621.2 KiB (Peak: 654.1 KiB) ]