2015-06-08 144 views
4

列出系統中的所有用戶,我注意到其中一些是系統用戶,並且沒有例如工作時間。目前,我只列出它們並從我的循環中排除,這是一種Q方法,我更喜歡做對。如何識別非人類用戶?

我還沒有找到systemuser實體的任何具體信息,它告訴我某個實體是一個真實的配置文件(即在Office 365門戶中創建)還是默認情況下提供給我的MS。

該Q & D代碼如下。

QueryExpression userQuery = new QueryExpression { EntityName = "systemuser", ... }; 
IEnumerable<Entity> users = service.RetrieveMultiple(userQuery).Entities; 

IEnumerable<String> automatics = new[] { "INTEGRATION", "Support User", "SYSTEM" }; 
    foreach (Entity user in users.Where(element 
    => !automatics.Contains(element.GetAttributeValue<String>("fullname")))) { ... } 

其次最好的解決辦法,如果沒有辦法確定誰是自動化名單上,誰是真正的花花公子,是使異常的詳盡完整列表。再一次,我的google-fu失敗了,因爲我還沒有找到關於實體systemuser的自動創建實例的完整列表的任何文檔。

回答

2

一種方法是檢查CreatedBy字段;對於用戶SYSTEMINTEGRATION,這是NULL。此字段也是CRM管理員用戶NULL,因此如果管理員用戶正在被人類主動使用,則應考慮排除此用戶。

FilterExpression humanFilter = new FilterExpression(); 
humanFilter.AddCondition(new ConditionExpression("createdby", ConditionOperator.NotNull)); 

if (retrieveAdminUser) 
{ 
    humanFilter.FilterOperator = LogicalOperator.Or; 
    humanFilter.AddCondition(
    new ConditionExpression("domainname", ConditionOperator.Equal, "[email protected]")); 
} 

userQuery.Criteria.AddFilter(humanFilter); 
+1

針對管理員用戶的單挑+1。 –