Forum
merhabalar,
sistemdeki son durumu mail yoluyla almayla ilgili olarak örnek scripti .vbs olarak
kayıt ettiğimde satır:13 karakter:1 kod:800A0400 bir hata veriyor.
Selamlar,
Sistemdeki son durumu derken?Script tam olarak size hangi değerleri geri döndürücek?Ya da kullanığınız script ne iş yapıyor?
sistemin service pack bilgilerini almak bazı servisler ile ilgili bilgileri almak serverdaki boş alan durumlarını kontrol etmek vs.
Script içeriğini paylaşabilirmisin?Script'in yazım dilini görmeden 10. satır veya 25.satır'da şunu yap diyemeyiz.
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Raporlar"
objMessage.From = "
<!--
var prefix = 'ma' + 'il' + 'to';
var path = 'hr' + 'ef' + '=';
var addy52253 = 'notifications' + '@';
addy52253 = addy52253 + 'mshowto' + '.' + 'org';
document.write( '' );
document.write( addy52253 );
document.write( '' );
//-->\n @cozumpark.com">notifications@cozumpark.com
<!--
document.write( '' );
//-->
<!--
document.write( '' );
document.write( 'span>' );
//-->
"
objMessage.To = "
<!--
var prefix = 'ma' + 'il' + 'to';
var path = 'hr' + 'ef' + '=';
var addy5039 = 'erkan.sezgin' + '@';
addy5039 = addy5039 + 'mshowto' + '.' + 'org';
document.write( '' );
document.write( addy5039 );
document.write( '' );
//-->\n @cozumpark.com">erkan.sezgin@cozumpark.com
<!--
document.write( '' );
//-->
<!--
document.write( '' );
document.write( 'span>' );
//-->
"
objMessage.TextBody = "Örnek mesaj"
‘’’’’ üstte yer alan kısımda cdo objesini yarattık ve bu mesajın konu,kimden,kime ve içeriğini hazırladık.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
‘’’’’ bu mesajın smtp yoluyla gideceğini gösteriyor.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.cozumpark.com"
‘’’’’mesajı göndermek üzere kullanacağınız smtp sunucunun adını yada IP sini yazıyoruz.
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
‘’’’’Smtp
sunucunun hangi portunu kullanacağımızı belirtiyoruz.Smtp servisleri
varsayılan olarak 25 ‘’’’’nolu portu kullanırlar.Exchange Server
kullanıyorsanız default smtp virtual server yerine başka portu
‘’’’’kullanan ikinci bir smtp virtual server yaratarak bunu
kullanmanızı tavsiye ediyorum.
objMessage.Configuration.Fields.Update
objMessage.Send
mesaj
gönderme scripti ni test maksatlı .vbs olarak kaydettiğinizde
kullanabilirsiniz.Ama bizim asıl yapmak istediğimiz mail göndermek
değil ,bunun öncesinde başka bir scripte bağlamak.Bu scriptin ne
olduğunu siz seçebilirsiniz.Örnek olarak disklerimizde ne kadar boş
alan olduğuna dair bilgi veren bir scripti birleştireceğiz.
=======================================================
Set fso=CreateObject(“Scripting.FileSystemObject”)
‘Dosya objesi açıyoruz.
Set objInputFile=fso.OpenTextFile(“c:\Sunucular.txt”,1),True)
‘C:\Sunucular.txt dosyasında bulunan host isimlerini script okuma (1) modunda açıyoruz.
Set objOutputFile=fso.OpenTextFile(“SunucuDiskDurumu.txt”,2,True)
‘c:\sunucuDiskDurumu dosyasını alacağımız bilgileri yazmak için yazma(2) modunda açıyoruz.
Const HARD_DISK = 3
‘Sürücü tipini belirtiyoruz.
Do While objInputFile.AtEndOfLine <> True
strComputer=objInputFile.ReadLine
‘Do While döngüsüyle InputFile içerisindeki host isimlerini okunacak ve strComputer değişkenine ‘atanacak.
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk Where DriveType = " & HARD_DISK & "")
‘WMI sorgularıyla istediğimiz verileri sorgulayacağız.
For Each objDisk in colDisks
objOutputFile.WriteLine(strComputer)
objOutputFile.WriteLine ( "DeviceID: "& vbTab & objDisk.DeviceID)
objOutputFile.WriteLine ("Free Disk Space: "& vbTab & objDisk.FreeSpace/1024)
Next
‘Her
disk için host ismi,DeviceID ve disk üzerindeki boş alan bilgisi
SunucuDiskDurumu.txt ‘dosyasına yazılacakFreeDiskSpace satırında değeri
KB olarak görmek için 1024 e bölüyoruz ‘dilerseniz MB ve GB için farklı
bölen kullanabilirsiniz.
Loop
objOutputFile.Close
‘Disk bilgilerini yazdığınız dosyayı kapatmak zorundayız ve okuma (1) modunda tekrar açmalıyız.
Set objOutputFile=fso.OpenTextFile(“SunucuDurumu.txt”,1,True)
Yukarıda
bahsettiğimiz email scriptini bu kodlarımızın devamına
ekleyebiliriz.Mail içerisinde disk durumuna ilişkin bilgilerin gitmesi
için objMessage.TextBody = objOutputFile.ReadAll satırını
değiştiriyoruz. Bu bilgileri mesajın içinde değil ek olarak görmek
isterseniz objMessage.TextBody = satırının altına
objMessage.AddAttachment "c:\SunucuDiskDurumu.txt" olarak yeni bir
satır ekleyebilirsiniz.
Bu oluşturduğumuz .vbs dosyasının belirlediğimiz zamanlarda çalışması için Görev zamanlayıcı (Task Scheduler) yı kullanarak C:\Windows\System32\cscript.exe
c:\diskmail.vbs programını çalıştırması için ayarlayabiliriz..vbs
dosyanızın yoluna dikkat ediniz eğer boşluk varsa başta ve sonda “
kullanmak gerekecektir.
(Alıntıdır.)
Script içerisindeki smtp server'ı,portunu,sunucular.txt dosyasına yazılacak olan host isimlerinin hepsini kendi yapına göre güncellediğini düşünüyorum.Tavsiye olarak script'in içerisindeki açıklama satırlarını silip tekrar denermisin?
Script içerisindeki smtp server'ı,portunu,sunucular.txt dosyasına yazılacak olan host isimlerinin hepsini kendi yapına göre güncellediğini düşünüyorum.Tavsiye olarak script'in içerisindeki açıklama satırlarını silip tekrar denermisin?
hocam onları sildim benim oluşturduğum .vbs
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Raporlar"
objMessage.From = " [email protected]"
objMessage.To = " [email protected] "
objMessage.TextBody = "örnek mesaj"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mail.aris.com.tr"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
Devamı nerede?Bu arada bilgi çekmek istediğin host makinalarında WMI servisi start durumda mı?Biliyorsun bu script WMI filter olmadan tek başına bir işe yaramaz.
bunu zaten öylesine deneme amaçlı olarak düzenlemiştim ama dediğiniz gibi WMI filter açık mı değilmi ona bakmam gerekiyor sanırım.
peki onu nereden düzenleyebilirim ki?
WMI(Windows Management Instrumentation) bir servistir.Services.msc konsolundan bak bakalım start durumda mı?
şimdi başlattım ikisinide hem windows yönetim yardımcıları hemde windows yönetim sürücü uzantıları start durumdalar.Fakat yine aynı hatayı veriyor.
Alchemy Network Inventory + Feboti Mail tavsiye ediyorum. Bİlgisayara ait istediginiz ve istemediginiz configi alır ve mailinize otomatik yollattırabilirsiniz
Merhaba
eğer profesyonel bir yazılım düşünürseniz ve bunun için bütçeniz varsa
GFI Server Monitor bu işi mükemmel yapıyor.
Merhabalar,
800A0400 hatasinin birkac nedeni olabilir:
Örnegin, VBS kodunuz içerisinde uzun bir satir ikinci satira kaydiginda satir devamliligini saglayan _ (underscore) parametresi koymadiginiz durumlarda karsilasabilirsiniz.
Örnegin,
On Error Resume Next
WScript.Echo "WSH Versiyonu : " & WScript.Version & " " & WScript.BuildVersion
& vbcr & "Script Dosyasi: " WScript.ScriptName
WScript.Quit
Bu script'de WScript.Echo ile baslayan satir alta kaymis oldugundan bu satirin bir alt satirdan devam ettigini söylemeniz için satir sonuna _ karakteri koymaniz gerekir. Koymazsaniz 800A0400 hatasi ile karsilasirsiniz.
Hatayi gidermek için yazmaniz gereken kod biçimi asagidadir:
On Error Resume Next
WScript.Echo "WSH Versiyonu : " & WScript.Version & " " & _
WScript.BuildVersion & vbcr & "Script Dosyasi: " WScript.ScriptName
WScript.Quit
800A0400 hatasinin bir diger nedeni de açiklama satirlarinin basina ' (tek tirnak) isareti konulmamasidir. Örnegin;
Bu bir açiklama satiridir
seklinde kod içerisinde bir satir geçiyorsa, bu satirin basina ' isareti koymazsaniz, yine 800a0400 hatasini alirsiniz. Hatayi gidermek için kod asagidaki sekilde yazilmalidir:
' Bu bir açiklama satiridir.
800A0400 hatasinin bir diger nedeni de yanlis ya da eksik komut yazilmalarinda gerçeklesir. Örnegin,
X= CreateObject("Wscript.Network")
Yukaridaki kodda X degiskenine bir deger atamasi yapiliyor. Fakat VBS dilinde deger atamayi SET komutu ile yapildigindan degisken adinin önüne mutlaka SET deyiminin konulmasi gerekir. yani kodun dogrusu su asagidaki sekilde düzeltilmezse yine 800A0400 hatasi alirsiniz.
Set x = CreateObject("Wscript.Network")
Sorunuza gelince, ag ortaminda çalisan Windows Sistemlerinizden üzerindeki donanim, yazilim vb. bilgileri toplamak islevini VMI Script kodlari ile yapabilirsiniz. http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true adresinde Microsoft'un Script Deposundan farkli kategoride çok sayida örnek VMI Scriptleri bulabilirsiniz. VMI Script kodlari vbs script dosyalari içerisinden gönderilirler. Özellikle VMI - VBS Scriptleri yazmaniz için VBSEDIT isimli araci kesinlikle tavsiye ederim. Çok daha rahat bir arayüzde isteginize uygun scriptler gelistirebilirsiniz.
Eger scriptlerle kendinize özel bir uygulama gelistirmek gibi bir niyetiniz yoksa, arkadaslarin önerdikleri 3rd parti uygulamalarla da ag ortamindaki sistemler hakkinda bilgi toplayabilirsiniz.
Bunlara bir kaç ilave de ben öneriyorum:
Microsoft’un GPInventory aracini denemenizi oneririm. http://www.microsoft.com/downloads/details.aspx?familyid=1D24563D-CAC9-4017-AF14-8DD686A96540&displaylang=en adresinden indirebilirsiniz.
Ayrica asagidaki cozumleri de incelemenizi tavsiye ederim:
http://www.microsoft.com/turkiye/yey/msia.mspx
LOGINventory
Hyena
AdventNet ManageEngine ServiceDesk Plus
Deksi Network Inventory
Systemhound
VIT Manager
Eger ortamda SQL kullaniyorsaniz; gerek VMI Scriptlerle gerekse de bu uygulamalari kullanarak topladiginiz bilgileri SQL veritabani ortamina atip, orada da Database Mail özelligi ile sonuclari bir dosya olarak kendinize mail olarak göndertebilirsiniz. Fakat önerdigimiz uygulamalar içerisinde kendi içerisinde raporlari mail atma yetenegi olanlar da var.
iyi calismalar,
Mesut ALADAG
Technology Director
Microsoft Certified Trainer
www.ITSTACK.com.tr | www.mesutaladag.com | www.cozumpark.com