
Bildiğimiz gibi artık powershell ile sunucularımızı ve işlerimizi yönetebiliyoruz.Powershell’in bir diğer marifetide Net.Mail.SmtpClient objesini kullanarak mail gönderebilmesi.Aşağıdaki kodları kullanarak isterseniz bir.ps1 oluşturabilir ve bunu schedule ile istediğiniz zamanlarda çalıştırabilirsiniz.Powershell’de mail gönderimi için
$emailFrom = “user@yourdomain.com”
$emailTo = “user@yourdomain.com”
$subject = “your subject”
$body = “your body”
$smtpServer = “your smtp server”
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)
powershell, send mail
Marc Nivens’ın yazdığı aşağıdaki örnek script ile ,yapımızdaki Lotus Notes kullanıcılarını Exchange 2007′ye migrate edebiliriz.Bunun için tek yapmamız gereken kullanıcıları aşağıdaki formatla bir txt dosyasına kaydetmek:
Anil Erduran/DOMINO
Osman Yagmurdereli/DOMINO
Hülya Avsar/DOMINO
Ardından aşağıdaki scripti çalıştırarak migrate işlemine başlayabiliriz.
$TargetDatabase = “EXCHANGE\First Storage Group\Mailbox Store”
$SourceFile = “c:\dominousers.txt”
$a = remove-item c:\miglog.txt -ea SilentlyContinue
$error.Clear()
$UserList = Get-Content $SourceFile
foreach($user in $UserList)
{
$message = “Migrating User ” + $user
write-output $message | out-file -filePath “c:\miglog.txt” -append -noClobber
move-dominomailbox $user -TargetMailboxDatabase $TargetDatabase
if($error.Count -ne 0)
{
$message = “User ” + $user + ” failed migration”
write-output $message | out-file -filePath “c:\miglog.txt” -append -noClobber
$message = “Error: ” + $error[0].ToString()
write-output $message | out-file -filePath “c:\miglog.txt” -append -noClobber
$error.Clear()
}
}
c:\dominousers.txt dizinindeki dosyada kullanıcıları kaydettiğimiz txt dosyası bulunuyor.Ayrıca migrate işlemi sırasında meydana gelen hatalar c:\miglog.txt dosyasına yazılıyor.
Buradaki değerleri değiştirerek yada eklemeler yaparak daha spesifik migrate çözümleri üretebiliriz.
exchange server 2007, lotus domino, migrate, notes
Komut isteminde AT komutu ile zamanlanmış görevler oluşturabiliriz.Örneğin:
AT \\bilgisayarismi 02:00 /Interactive /every:pazartesi CHKDSK C:
komutunu yazdığımızda yada batch dosyası olarak kaydedip çalıştırdığımızda chkdsk aracı her pazartesi saat 02:00′da çalışacak vaziyette zamanlanmış olur.
Aynı zamanda bu disk kontrol işlemi sırasında log tutulmasını sağlayabiliriz.Bunun için ayrı bir .bat dosyası hazırlamamız gerekiyor.AT komutunu aşağıdaki gibi kullanalım:
AT \\bilgisayarismi 02:00 /Interactive /every:Friday loglama.BAT
Bu zamanlanmış görev loglama.bat dosyasını çağıracaktır.Bunun için birde loglama.bat isminde dosya oluşturacağız.Chkdsk işlemini loglara dökmek oldukça basit.> işareti komuttan sonra konulduğunda o komutun bilgilerini export etmeye yarar.Bunun için aşağıdaki komutu kullanacağız:
CHKDSK > DURUM.LOG
Bu durumda ilk batch dosyamız ikincisini belirlenen zaman aralıklarında çağıracak.Ardından ikinci dosyada işlemini yapıp,kontrolden sonra log dosyasını oluşturucak.
Burada dikkat etmemiz gereken başka bir konu daha var.Biz bir görev oluşturduk.Yani her pazartesi saat 2′de bu komut çalışacak ve loglama işlemini yapıcak.Bu log dosyalarının isimlerini benzersiz yapmamız gerekli ki,hangi hafta hangi loglama yapılmış kolayca ayırt edebilelim.Bunun için değişkenleri kullanacağız.
for /F “tokens=2,3,4 delims=/ ” %%i in (’date /t’) do set datefile=%%i%%j%%k.log
Chkdsk > %datefile%
Buradaki komutla birlikte .log dosyasının ismini sistem tarihine göre ayarlamasını sağladık.Chkdsk komutuda log dosyasını bu değişkene göre oluşturacak
batch, chkdsk
on error resume next
CONST QUOTA_EXEMPTION = 500000 ‘* > mDBOverHardQuotaLimit is exempted to use default quota
CONST EXEMPTED_WORD = “exempted”
Const ADS_SCOPE_SUBTREE = 2
Const ADS_CHASE_REFERRALS_EXTERNAL = &h40
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
Const ADS_UF_PASSWD_CANT_CHANGE = &h00040
Const ADS_UF_PASSWORD_EXPIRED = &H80000
Const ADS_UF_LOCKOUT = &h00010
Set rootDSE = GetObject(”LDAP://RootDSE”)
sObjectDN = “LDAP://” & rootDSE.Get(”defaultNamingContext”) Devamini oku »
script
Active Directory üzerindeki tüm kullanıcıları bir excel dosyasına export etmek için aşağıdaki scripti kullanabiliriz.
Eğer Office sürümü ingilizce ise script içindeki “sayfa1″ değerini “sheet1″ olarak değiştirmeliyiz.
http://anilerduran.com/ad-export.vbs
ad, export, script, users
Networkümüzde bulunan istemci makinalara hangi tarihte kim saat kaçta oturum açmış yada kapamış gibi bilgilere erişmek için ufak bir script kullanabiliriz.
echo Oturum Açma %username% %computername% %date% %time% >> \\192.168.x.x\sysvol\OTURUM_ACMA_KAYITLARI\%username%.txt
Bu komut ile oturum açan kullanıcılar belirttiğimiz ip adresindeki OTURUM_ACMA_KAYITLARI klasörü altına kullanıcı isimleri kullanılarak loglanacaktır.
echo Oturum Kapama %username% %computername% %date% %time% >> \\192.168.x.x\sysvol\OTURUM_KAPAMA_KAYITLARI\%username%.txt
Burada ise aynı işlemi oturum kapama için kullanıyoruz.Sondaki .txt uzantısını .cvs yaparak excel ile daha ayrıntılı bir tablo elde edebiliriz.
Scriptleri hazırladıktan sonra yapmamız gerekn GPO ile logon ve logoff script olarak tüm organizasyona bunu atamak.Aşağıda anlatımı mevcut..
http://www.anilerduran.com/index.php/logon-scripts/
script logon logoff
strComputer = “.”
intMailboxSize = 2048 ’size in KB, all recipient who exceeds this amount will be displayed
Set objWMIService = GetObject(”winmgmts:” & “{impersonationLevel=impersonate}!\\” & strComputer & _
“\ROOT\MicrosoftExchangeV2″)
Set colItems = objWMIService.ExecQuery(”Select * from Exchange_Mailbox where size > ” & intMailboxSize)
if colItems.count = 0 then ‘no recipients were found
wscript.echo “No items were found”
wscript.quit
end if
mbs_len = len(”MAILBOX SIZE(KB)”)
mbdn_len = len(”MAILBOX DISPLAY NAME”)
wscript.echo “MAILBOX DISPLAY NAME” & space(30 - mbdn_len) & “MAILBOX SIZE(KB)”
For Each objItem in colItems
if len(objItem.MailboxDisplayName) > 30 then
padding = 0
Wscript.stdOut.write left(objItem.MailboxDisplayName,27) & “…” & space(padding)
else
padding = 30 - len(objItem.MailboxDisplayName)
Wscript.stdOut.write objItem.MailboxDisplayName & space(padding)
end if
Wscript.stdOut.write space(mbs_len - len(cstr(objItem.Size))) & objItem.Size
wscript.echo
next
No Tags
Exchange 2003 bulunan serverımızı restart etmek istediğimizde bir müddet bizi bekleticektir çünkü exchange servislerinin durdurulması biraz sürer.
Bu sebeple yada başka bir sebeple exchange servislerini durdurmamız gerekirse aşağıdaki komutları batch file olarak kaydedip tek bir tıkla bunu halledebiliriz.
net stop “Microsoft Exchange Information Store” /y
net stop “Microsoft Exchange System Attendant” /y
net stop “Microsoft Exchange IMAP4″ /y
net stop “Microsoft Exchange Routing Engine” /y
net stop “Microsoft Exchange POP3″ /y
net stop “Microsoft Exchange Management” /y
exchange server, script, services, shutdown
‘ On Error Resume Next
Dim cComputerName
Dim objWMIService
Dim oDisMbox
Dim mBox
Dim dmBoxes
Dim strAnswer
Const cWMINameSpace = “root/MicrosoftExchangeV2″
Const cWMIInstance = “Exchange_Mailbox”
cComputerName = “SRVEXC01″ Devamini oku »
script
‘Who Has Access - By Alan Mosley, ThatsIT Solutions Australia
‘Writes report to text file, showing who has access to Exchange users mailboxes
‘Must be run on email Server
Const DOMAIN = “IT”
Const EMAIL_SERVER = “HANK”
Const LDAP_DOMAIN = “LDAP://dc=ThatsIT,dc=local” Devamini oku »
script
Şu adresten indirebileceğimiz script sayesinde 90 gün içinde herhangi bir işlem yapmamış olan bilgisayar hesaplarını .html olarak rapor alabilir ve ardından silme işlemini gerçekleştirebiliriz.Komut satırına düştüğümüzde toplam 3 komuttan oluşuyor.
oldcmp.exe /report
oldcmp.exe /disable
oldcmp.exe /delete
active directory, bilgisayar hesabı, computer account, delete, script, silme
Bir grup kullanıcı farklı makinalarda oturum açtığında belli başlı 3 yazıcının tanıtılması istenebilir.Bunun için her seferinde uğraşmamak için logon script olarak şunu kullanabiliriz.
—————————-
Set objNetwork = CreateObject(”WScript.Network”)
objNetwork.AddWindowsPrinterConnection “\\banko3\hpLaserJ”
—————————-
add script, network, printer, share, yazıcı ekleme
Networkümüzde gerekli haklarımız tanımlanmışsa uzak bir makineyi kapatabilir,restart yada logoff edebiliriz.Bruce Walton ‘ın hazırladığı script:
———————
msg=”Yapmak istediginiz islemi seciniz:” & vbcrlf & “0 - Log off” & vbcrlf & _
“1 - Shutdown” & vbcrlf & “2 - Reboot” & vbcrlf & “8 - Power Off”
flag=inputbox(msg)
if flag<>0 and flag<>1 and flag<>2 and flag<>8 then
msgbox “Incorrect selection”
wscript.quit
end if
Servers=array(”computer1″, “computer2″, “computer3″)
for x=lbound(servers) to ubound(servers)
for each OS in getobject (”winmgmts:{(Shutdown)}//” & servers(x) & _
“/root/cimv2″).InstancesOf(”Win32_OperatingSystem”)
set Security = OS.Security_
set PrivObj = Security.Privileges
PrivObj.Add(18)
RetVal = OS.Win32ShutDown(flag,0)
next
if RetVal = 0 then
wscript.echo “Shutdown ” & servers(x)
else
wscript.echo “Unable to shutdown ” & servers(x)
end if
next
network, remote, restart, script, shutdown, uzaktan kapama
Google gruplarında bir arkadaşın sorusu üzerine araştırıp bulduğum bir script gerçekten beni çok şaşırttı.
Şöyle bir senaryo düşünelim.3 Tane OU’muz var.
Muhasebe-Finans-Yönetim
Bir de computers container’ımız var built-in gelen.Şimdi Muhasebe grubuna bilgisayar üzerinden bir policy çakmak istiyoruz.Ama bilgisayar isimleri oldukça karmaşık ve hepsi default gelen computers grubunun altında.Bu durumda bir scriptle işimizi çok Devamini oku »
bilgisayar hesabi tasima, computer account, dsmove, Group Policy, move computer, script, server 2003, strcomputer, vbs
Herhangi bir user’ın hangi Domain Controller’dan logon olduğunu öğrenmek için komut isteminde şu komutu kullanırız.
“set logonserver”
echo %logonserver% komutunuda script olarak kullanabiliriz
ANIL ERDURAN, DC, domain controller, echo, logonserver, script, server 2003
Logon Script günümüz şartlarında sistem yöneticileri açısından oldukça kolaylıklar sağlayan bir uygulamadır.Oluşturduğumuz bu scriptler sayesinde merkezi bir yönetim gerçekleştirerek networkumuzde bulunan kullanıcılar için çeşitli uygulamaları hayata geçirebiliriz.Komut satırını kullanarak çalıştırabildiğimiz her komutu logon scriptler sayesinde kullanıcılarımızın bilgisayarında çalıştırabiliriz. Devamini oku »
echo, Group Policy, Logon scripts, script, vbscript
ve 125 yorum bulunmaktadir.