7

Tridionに1年間ログインしていないユーザーのレポートを生成するスクリプトを作成する必要があります。変更された日付とすべてのファイルのユーザーを取得できることは知っていますが、変更を加えていない、つまり読み取り専用アクセスのみのユーザーのログイン日を追跡するにはどうすればよいでしょうか。

4

5 に答える 5

8

Tridion 2011 アプリケーションの IIS ログを確認します。そこには、さまざまなユーザーによる Tridion のすべてのページに対する要求が表示されます。一部のエントリは次のようになります。

2012-09-20 00:48:53 ::1 GET /WebUI/Editors/CME/Views/TridionDashboard/TridionDashboard.aspx - 81 TRIDION\Administrator ::1 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/537.1+(KHTML,+like+Gecko)+Chrome/21.0.1180.89+Safari/537.1 200 0 0 48

上記の項目から、TridionDashboard ページ、つまりログイン後に表示される最初のページが TRIDION\Administrator ユーザーによってアクセスされたことがわかります (はい、私の Tridion VM は「TRIDION」と呼ばれ、管理者アカウントを使用してログオンします)。 )。

そのため、ログがいっぱいになったときにログが上書きされないようにして、ログを取得して解析できる場所にアーカイブする必要があります。

必要な情報はユーザー名だけです。キーがユーザー名で値がタイムスタンプになるように、何らかの種類の HashSet データ構造 (一意のキーのみを格納する) に単純にスローします。Powershell を使用して数行のコードですべての解析を実行できるに違いありません (または、Cygwin を使用している場合は、grep コマンドを使用したワンライナーでもうまくいきます)。

通常、ログは %SystemDrive%\inetpub\logs\LogFiles にありますが、システムをチェックして、場所が変更されていないことを確認してください。

于 2012-09-20T01:04:24.713 に答える
3

Mihai は少し前にこれについてブログを書きました。ここにリンクがあります。コード例もいくつかあります: http://yatb.mitza.net/2012/03/capturing-users-last-login-date-into.html

于 2012-09-21T11:49:12.177 に答える
3

私はこのようなことを書いたことがありません。これを達成する唯一の方法は、CME を開くたびにユーザー オブジェクトにログイン時間を示す AppData を追加する GUI 拡張機能を作成することです。

ログインが発生したときにイベントがトリガーされるとは思いません。そうでない場合は、均等なシステムを作成することをお勧めします。

Nuno によるこの記事 (http://www.tridiondeveloper.com/inheriting-metadata-on-organizational-items) を読むことを検討してください。この記事では、ユーザーがアイテムを開くことによってトリガーされるアクションの実行について説明しています。ユーザーが読み取り専用アクセスしか持っていない場合でもトリガーされると思います(ただし、これを確認する必要があります)。すべての読み取りアクションでトリガーされる場合、ユーザーが CME で IdentifiableObject を開くたびに、ユーザーの AppData を更新できます。これにより、ユーザーが最後に CME のアイテムをいつ表示したかがわかります。

それが役立つことを願っています

クリス

于 2012-09-20T00:23:08.303 に答える
1

Load イベントを実装できます。これは、GUI のほぼすべてのアクションで呼び出されます。誰かが Tridion を使用するとすぐに、イベントが確実に呼び出されます。ただし、注意してください。非常に効率的なコードを作成する必要があります。そうしないと、システムの速度が低下します。

于 2012-09-20T11:57:00.800 に答える
-1

Tridion は「このユーザーが最後に行った変更」を追跡しないため、自分でロールを作成する必要があります。

最初に頭に浮かぶのは、 のイベントハンドラーSaveIdentifiableObjectを作成することです。そのハンドラーで、ユーザーのApplication Dataプロパティを更新できます。その後、スクリプトはすべてのユーザーを単純にループし、AppData を取得して、1 年以上非アクティブなユーザーを特定します。

于 2012-09-19T22:43:37.070 に答える