Active Directorydeki bilgisayarların listesini alarak, bazı bilgisayarlar üzerinde toplu işlem yapmak istiyorsak PrincipalSearcher class’ı ile FindAll metodunu kullanmamız gereklidir.

Tek bir bilgisayarı arıyorsak FindOne metodu daha kullanışlıdır. Aşağıda toplu ve tek olarak arama, listeleme ve bilgisayarı enable/disable etme örnekleri gösterilmiştir.

Enable disable örnekleri dışında bilgisayara ait başkaca bilgileri görme veya değiştirme şansınız vardır. Bunları Msdn makalelerinde bulabilirsiniz.

Bu Classları barındıran namespace’ler:

using System.DirectoryServices;
using System.DirectoryServices.AccountManagement;

Çoklu bilgisayar arama, listeleme ve işlem örneği:

PrincipalContext baglanti = new PrincipalContext(ContextType.Domain, "domain.com.tr", "USER", "PASS");
Principal filter= new ComputerPrincipal(baglanti);
PrincipalSearcher searcher = new PrincipalSearcher(filter);

foreach (Principal bilgisayar in searcher.FindAll())
{
ComputerPrincipal _bilgisayar = (ComputerPrincipal)bilgisayar;
if (_bilgisayar != null)
{
	//Bilgisayari Disable Etme
	if (_bilgisayar.SamAccountName == "XYZ")
	{
	_bilgisayar.Enabled = false;
	_bilgisayar.Save();
	Console.WriteLine(_bilgisayar.SamAccountName + " Disable Edildi.");
	}

	//Bilgisayari Enable Etme
	if (_bilgisayar.SamAccountName == "ABC")
	{
	_bilgisayar.Enabled = true;
	_bilgisayar.Save();
	Console.WriteLine(_bilgisayar.SamAccountName + " Enable Edildi.");
	}

	//Normal Listeleme
	Console.WriteLine(_bilgisayar.SamAccountName);
 }
}

Bir bilgisayar arama ve işlem örneği:

string PcName="XYZ";
PrincipalContext baglanti = new PrincipalContext(ContextType.Domain, "domain.com.tr", "USER", "PASS");
Principal filter = new ComputerPrincipal(baglanti);
filter.Name = String.Format("*{0}*", PcName);
PrincipalSearcher searcher = new PrincipalSearcher(filter);
Principal bilgisayar = searcher.FindOne();

if (bilgisayar != null)
{
	ComputerPrincipal _bilgisayar= (ComputerPrincipal)bilgisayar;
	if (_bilgisayar!= null)
	{
        //enable etmek için
	_bilgisayar.Enabled =true;
        //disable etmek için
	_bilgisayar.Enabled =false;
	_bilgisayar.Save();
	}
}

Not: Bu kodlar yazarın çalışması olup, kullanmanız durumunda sisteminizde oluşabilecek zararlardan kullanan kişi sorumludur. Bu program kodlarını örnek alma amaçlı kullanmanızı tavsiye ederiz.

Kategoriler: CSharp