Я создаю небольшое приложение, которое выбирает пользователей из ActiveDirectory и сохраняет их в файле. Из файла, который он вставляет в базу данных, существует ли пользователь в базе данных уже или нет. Когда я запускаю приложение, оно выглядит так:
Uspjesno izvrseno !
Ukupno novi korisnika : 1
Ukupno izmjenjenih korisnika : 0
Uspjesno izvrseno !
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 1
Uspjesno izvrseno !
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 1
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Uspjesno izvrseno !
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 1
Uspjesno izvrseno !
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 1
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Каждый раз, когда l oop находит пользователя, которого он вставляет, но это выглядит раздражающим, и я не хочу смотреть столько строк в Console
, мне нужно только 3 строка что-то вроде
Ukupno novi korisnika : 0
Ukupno izmjenjenih korisnika : 0
Вот и мой код
using MimeKit;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.DirectoryServices;
using System.IO;
using System.Net.Mail;
using System.Web.Mail;
namespace ADApp
{
public class Korisnik
{
public int Id { get; set; }
public string Username { get; set; } //samaccountname
public string DisplayName { get; set; } //displayname
public bool isEnabled { get; set; } //useraccountcontrol
public bool PassNevExp { get; set; } //pwdlastset
}
class Program
{
private static readonly log4net.ILog log =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
static void Main(string[] args)
{
log.Info("Novih korisnika: ");
log.Info("Izmjenjeno: ");
foreach (Korisnik korisnik in VratiKorisnike())
{
Console.WriteLine(korisnik);
}
Console.ReadLine();
//****************Slanje mailova ************************//
SmtpClient mySmtpClient = new SmtpClient("smtp.gmail.com");
// set smtp-client properties
mySmtpClient.UseDefaultCredentials = false;
System.Net.NetworkCredential basicAuthenticationInfo = new
System.Net.NetworkCredential("yourusername@gmail.com", "YourGmailPassword");
mySmtpClient.Credentials = basicAuthenticationInfo;
mySmtpClient.EnableSsl = true;
mySmtpClient.Port = 587;
// add from,to mailaddresses
MailAddress from = new MailAddress("sender@gmail.com", "IAMSender");
MailAddress to = new MailAddress("reciver@gmail.com", "IAMReceiver");
System.Net.Mail.MailMessage myMail = new System.Net.Mail.MailMessage(from, to);
// set subject and encoding
myMail.Subject = "ActiveDirectory";
myMail.SubjectEncoding = System.Text.Encoding.UTF8;
// set body-message and encoding
myMail.Body = "<b>Ukupno dodanih: </b><br>Ukupno izmjenjenih: <b>HTML</b>.";
myMail.BodyEncoding = System.Text.Encoding.UTF8;
// text or html
myMail.IsBodyHtml = true;
mySmtpClient.Send(myMail);
}
public void ExcStrPrc(string Username, string DisplayName, bool isEnable, bool PassNevExp)
{
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=DesignSaoOsig1;Integrated Security=True");
SqlCommand cmd = new SqlCommand("ADProcTemp", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Username", Username.ToString().Trim());
cmd.Parameters.AddWithValue("@DisplayName", DisplayName.ToString().Trim());
cmd.Parameters.AddWithValue("@isEnabled", Convert.ToInt32(isEnable));
cmd.Parameters.AddWithValue("@PassNevExp", Convert.ToInt32(PassNevExp));
cmd.Parameters.Add("@addedUser", SqlDbType.Int).Direction = ParameterDirection.Output;
cmd.Parameters.Add("@updatedUser", SqlDbType.Int).Direction = ParameterDirection.Output;
conn.Open();
int k = cmd.ExecuteNonQuery();
var addedUserCount = (int)cmd.Parameters["@addedUser"].Value;
var updatedUserCount = (int)cmd.Parameters["@updatedUser"].Value;
if (k != 0)
{
Console.WriteLine("Uspjesno izvrseno !");
}
Console.WriteLine($"Ukupno novi korisnika : {addedUserCount.ToString()}");
Console.WriteLine($"Ukupno izmjenjenih korisnika : {updatedUserCount.ToString()}");
conn.Close();
}
public static List<Korisnik> VratiKorisnike()
{
List<Korisnik> lstADUsers = new List<Korisnik>();
string sDomainName = "saotest";
string DomainPath = "LDAP://" + sDomainName;
string fileLoc = @"C:\output.txt";
DirectoryEntry searchRoot = new DirectoryEntry(DomainPath);
DirectorySearcher search = new DirectorySearcher(searchRoot);
search.Filter = "(&(objectClass=user)(objectCategory=person))";
search.PropertiesToLoad.Add("samaccountname"); // Username
search.PropertiesToLoad.Add("displayname"); // display name
search.PropertiesToLoad.Add("userAccountControl"); // isEnabled
search.PropertiesToLoad.Add("pwdLastSet"); //passwordExpires
DataTable resultsTable = new DataTable();
resultsTable.Columns.Add("samaccountname");
resultsTable.Columns.Add("displayname");
resultsTable.Columns.Add("Neaktivan");
resultsTable.Columns.Add("dontexpirepassword");
SearchResult result;
SearchResultCollection resultCol = search.FindAll();
if (resultCol != null)
{
for (int counter = 0; counter < resultCol.Count; counter++)
{
string UserNameEmailString = string.Empty;
result = resultCol[counter];
if (result.Properties.Contains("samaccountname")
&& result.Properties.Contains("displayname"))
{
int userAccountControl = Convert.ToInt32(result.Properties["userAccountControl"][0]);
string samAccountName = Convert.ToString(result.Properties["samAccountName"][0]);
int isEnable;
int Dont_Expire_Password;
if ((userAccountControl & 2) > 0)
{
isEnable = 0;
}
else
{
isEnable = 1;
}
if ((userAccountControl & 65536) > 0)
{
Dont_Expire_Password = 1;
}
else
{
Dont_Expire_Password = 0;
}
Korisnik korisnik = new Korisnik();
korisnik.Username = (result.Properties["samaccountname"][0]).ToString();
korisnik.DisplayName = result.Properties["displayname"][0].ToString();
korisnik.isEnabled = Convert.ToBoolean(result.Properties["userAccountControl"][0]);
DataRow dr = resultsTable.NewRow();
dr["samaccountname"] = korisnik.Username.ToString();
dr["displayname"] = korisnik.DisplayName.ToString();
dr["neaktivan"] = Math.Abs(isEnable);
dr["dontexpirepassword"] = Dont_Expire_Password;
resultsTable.Rows.Add(dr);
// Poziva se store procedura
Program p = new Program();
p.ExcStrPrc(korisnik.Username.ToString().Trim(), korisnik.DisplayName.ToString().Trim(), Convert.ToBoolean(isEnable), Convert.ToBoolean(Dont_Expire_Password));
lstADUsers.Add(korisnik);
}
}
var json = JsonConvert.SerializeObject(resultCol, Formatting.Indented);
var res = json;
File.WriteAllText(fileLoc, json);
}
return lstADUsers;
}
}
}
Я почти уверен, что ошибка исходит от for
l oop, но я не знаю, как отключить this.
for (int counter = 0; counter < resultCol.Count; counter++)
Когда я перемещаю вызов функции внутри l oop, он выдает сообщение об ошибке.
Program p = new Program();
p.ExcStrPrc(korisnik.Username.ToString().Trim(), korisnik.DisplayName.ToString().Trim(), Convert.ToBoolean(isEnable), Convert.ToBoolean(Dont_Expire_Password));
Кто-нибудь может помочь мне решить эту проблему?