WSUS u unattended modda kurmak icin komut satiri parametrelerini kullanabilirsiniz. Bu sekilde yaptiginiz kurulumlarda WSUS kurulumu kullanici arayuzunde grafiksel calismayacaktir. Eger kurulumda sorun yasar iseniz kurulum log dosyalarini asagidaki lokasyonda bulabilirsiniz.
Kurulum dosyasini buradan indirebilirsiniz.
WSUSKurulumSurucusu:\Program Files\Microsoft Windows Server Update Services\LogFiles\
Komut satiri parametreleri ile kurulum yapmak icin komut satiri penceresini kullanmaya dikkat ediniz.
Genel kullanimi su sekildedir.
WSUS30-KB972455-x86.exe /komut-satiri parametresi property=value
64 bit icin
WSUS30-KB972455-x64.exe /parameter property=value
komut satiri ve property kisimlarinda neleri kullanabilieceginizi asagidaki tablolardan belirleyebilirsiniz.
WSUS kurulum uygulamasina bir parametre aktarmak istiyorsaniz, property adinin arkasina esittir isareti koymaniz ve degerini belirmeniz gerekir. Ornegin sessiz bir kurulum gerceklestirmek ve content klasoru olarak E:\WSUSContents klasorunu kullanmak istiyorsaniz asagidaki gibi bir komut calistirmaniz gerekecektir.
WSUS30-KB972455-x86.exe /q CONTENT_DIR=E:\WSUSContents
Yardima ihtiyac duydugunuzda WSUSSetup.exe /help veya /? komutlarinida calistirabilirsiniz.
64 bit WSUS u bir veritabani altinda yeni arkli bir instance'a kurmak istiyorsaniz
WSUS30-KB972455-x64.exe SQLINSTANCE_NAME=dbservername\instancename
WSUS komut satiri parametreleri ve aciklamalari
• /q : sessiz kurulum yapar
• /u : urunu kaldirir, eger WSUS kurarken SQL yerine Windows yerlesik veritabani kullandiysaniz onu da kaldirir.
• /p : urunu kurmaz ancak sisteminiz urunu kurmaya hazirmi onu kontrol eder ve eksikler var ise rapor eder.
• /?, /h : komut satiri parametreleri ve aciklamalarini verir.
• /g : WSUS onceki versiyounundan yukseltim icin kullanilir, bu parametre ile beraber kullanilabilecek tek parametre sessiz kurulum parametresidir (/q) bu parametre kurulumu sadece Default Website altina yapar.
WSUS kurulumu icin property ler ve aciklamalari.
• CONTENT_LOCAL : 0=icerik indirilecek, 1=Microsoft Update sitesinde tutulacak
• CONTENT_DIR : icerik klasorunun hedefi (guncelleme, servis paketi, yama vs bu klasorde tutulur.)
• WYUKON_DATA_DIR : Eger Windows Internal Database kullanacaksaniz bu veritabaninin tutulacagi klasoru belirler.
• SQLINSTANCE_NAME : Kullanacaksaniz harici SQL veritabanini belirler. SunucuAdi\SQLInstanceName seklinde deger verilmelidir. Eger lokalde ise sadece bilgisayar adi vermeniz yeterlidir. Varsayilan degeri %COMPUTERNAME%\WSUS dir.
• DEFAULT_WEBSITE : 0=port 8530, 1=port 80 (IIS te hangi portun kullanilacagini belirler)
• PREREQ_CHECK_LOG : Log dosyasi icin kaynak ve ad belirler.
• CONSOLE_INSTALL : 0=WSUS sunucusunu kurar, 1=sadece yonetim konsolunu kurar
• ENABLE_INVENTORY : 0=inventory ozelliklerini kurmaz, 1=kurar
• DELETE_DATABASE : 0=mevcut veritabanini tutar, 1=siler
• DELETE_CONTENT : 0=mevcut icerigi tutar, 1=siler
• DELETE_LOGS : 0=mevcut loglari tutar, 1=siler (/u parametresi ile kullanilir)
• CREATE_DATABASE : 0=mevcut veritabanini kullanir , 1=yeni veritabani yaratir.
• MU_ROLLUP :1=Microsoft Guncelleme gelistirme programina katilimi onaylar, 0=onaylamaz.• PROGRESS_WINDOW_HANDLE : Islem mesajlarini gostermek icin window handle
• FRONTEND_SETUP : 1=icerik lokasyonunu veritabanina yazmaz, 0=icerik lokasyonunu veritabanina yazar (Yuk dengelemesi icin gerekir.)
Merhaba, bu sayfalarimda WSUS, Software Distribution, SMS/SCCM, MDT ve diger Microsoft Sunucu urunleri hakkindaki yazilarimi bulabilirsiniz.
23 Jul 2011
22 Jul 2011
MDT Paylasim Lokasyonunu Otomatik Belirleme
MDT ile imaj olusturmaya baslayali uzun zaman oldu, simdi farkli lokasyonlardan da tek imaj , tek veritabani, tek paylasim kullanabilmek icin uzerinde calismaktayim, her lokasyonun kendi lokalinden kaynaklara ulasabilmesi icin SQL Replikasyonu, DFS-R gibi teknolojilerden faydalanmaktayim. Ancak dun DFS performansindan veya olasi DFS problemlerine karsin bu is baska nasil yapilir diye dokumanlari okurken BootStrap.ini de Gateway tanimlamalari ile lokasyon tanimlanabildigini buldum, bu ozellik cok hos , istemci gatewayinden nerede oldugunu ayirt edebilip ayarlari buna gore ozellestirebiliyorsunuz. Ankara'da isen Ankara paylasimina eris, su kullanici ile diyebiliyorsunuz.
Veya DeployRoot u tamamen bos birakabiliyorsunuz bu durumda sistem sizin yarattiginiz LocationServer.xml dosyasini okuyor ve kullaniciniza sizin tanimlamis oldugunu lokasyonlari listeliyor, bu yontemle ayni lokasyonda bir den fazla paylasiminiz var ise bunlara agirlik vererek yuku de dagitabiliyorsunuz.
Ben hem bootstrap.ini de gateway ve lokasyon degiskenlerini kullandim hem de eger lokasyonlardan birine eslesmedigi durumda LocationServer.xml i kullanmasi icin konfigure ettim.
BootStrap.ini de yapmaniz gereken
[Settings] altinda Priority i degistirmeniz olacak, boylelikle islem once Gateway eslesmelerine oncelik verecek ornegin :
[Settings]
Priority=DefaultGateway,Default
Daha sonra gatewayleri ve lokasyonlari tanimlayacaksiniz, ornegin
[Default Gateway]
192.168.1.1=Istanbul
192.168.3.1=Ankara
Daha sonra lokasyona ait ozellikleri asagidaki sekilde tanimlayabilirsiniz.
[Istanbul]
DeployRoot=\\IstanbulSunucunuz\DeploymentShare$ (MDT2010 oncesinde Distribution$)
[Ankara]
DeployRoot=\\AnkaraSunucunuz\DeploymentShare$ (MDT2010 oncesinde Distribution$)
Ikinci oncelik ise varsayilan yani Default, bu eslesme olmamasinda kullanicak ana yontem
[Default]
Buraya eslesme olmazsa kullansin diye bir sunucu tanimlabilirsiniz veya bos birakip sistemin LocationServer.xml okumasini isteyebilirsiniz.
Yukaridaki bolge degiskenlerine elbette normalde kullanabildiginiz UserID, UserDomain, SkipBDDWelcome vs gibi degerleri kullanabilirsiniz.
LocationServer.xml i yaratmak icin MDT dokumanini incelemeniz gerekiyor cunku kurulum klasorlerinde bulamayacaksiniz. Ben burada bir ornegi sizinle paylasacagim

Ornegin yukaridaki gibi bir XML i yaratip Disk:\DeploymentShare\Extra Files\Deploy\Control altina kopyalayip imaji tekrar olusturursaniz boot sirasinda eger herhangi bir deployroot tanimi bulunamaz ise sistem size xml de tanimlamis oldugunuz sunuculari listeleyecektir. Extra Files klasorunu MDT de Share ozelliklerine Extra Files kismindan tanimlamalisiniz ki dosyayi imaj icina alsin, bunu atlamayiniz.
Ayni XML de bolgeye has ozellikleri de tanimlayabilirsiniz , ornegin alan kodu icin

Fakat da bootstrap.ini de oldugu gibi paylasima erisecek kullanici tanimlanamamakta, bunun olmamasi benim planlarimi aksatmisti cunku yarattigim imajlar kurulumcuya sadece makine adi sormaya ayarli, geri kalan tum bilgileri klavye, alan kodu, domain, ou, uygulamalar vb seyleri zaten otomatize etmistim. Bunun uzerine MDT scriptleri nasil calisir diye arastirmaya basladim ve benim isimi gorecek bir cozum buldum, ayni seye ihtiyaci olacaklar icin umarim faydali olur.
Scripts\DeployWiz_Validation.vbs dosyasinda asagidaki kismi bulun
.
.
ValidateDeployRoot = FALSE
Do
On Error Resume Next
Err.Clear
If oFSO.FileExists(DeployRoot.value & "\Control\OperatingSystems.xml" ) then
.
.
ve su sekilde eklemeyi yapin, normalde asagidaki ek daha alt satirlarda zaten degiskenleri okumak icin var ancak bu kod kullanici haklari size sorulduktan sonra calistigi icin, kullanici bilgileri icin kullanilamamakta, biz kullanici haklari kismindan once okuyacagiz parametrelerimizi,
.
.
ValidateDeployRoot = FALSE
For each oItem in oXMLSiteData.selectNodes("//servers/server")
If SiteList.value = oUtility.SelectSingleNodeString(oItem,"serverid") then
For each oVariable in oItem.selectNodes("otherparameters/parameter")
Set oName = oVariable.Attributes.getQualifiedItem("name","")
If not oName is Nothing then
oProperties(oName.Value) = oVariable.Text
End if
Next
End if
Next
Do
On Error Resume Next
Err.Clear
If oFSO.FileExists(DeployRoot.value & "\Control\OperatingSystems.xml" ) then
.
.
Daha sonra asagidaki bolumu
.
.
oEnvironment.Item("UserID") = ""
oEnvironment.Item("UserDomain") = ""
oEnvironment.Item("UserPassword") = ""
.
.
su sekilde degistirin ki , XML den okudugumuz bilgileri eslestirelim,
.
.
oEnvironment.Item("UserID") = oProperties("UserID")
oEnvironment.Item("UserDomain") = oProperties("UserDomain")
oEnvironment.Item("UserPassword") = oProperties("UserPassword")
.
.
Asagidakileri de yukarida verilen ornekteki gibi parametrelere ekleyiniz.

Imajinizi olusturup , boot ettiginiz de eger GW eslesmesi olmazsa veya bootstrap.ini de DeployRoot tanimli degilse sistem size bolge-sunucu listesini gosterecektir, ve siz secim yapip Next'e bastiginizda kullanici bilgileri ekrani doldurulmus gelecektir.
Iyi gunler.
Not:XML leri imaj seklinde koydum cunku blogger xml leri algilayip sadece atanmis degerleri gosteriyordu.
Veya DeployRoot u tamamen bos birakabiliyorsunuz bu durumda sistem sizin yarattiginiz LocationServer.xml dosyasini okuyor ve kullaniciniza sizin tanimlamis oldugunu lokasyonlari listeliyor, bu yontemle ayni lokasyonda bir den fazla paylasiminiz var ise bunlara agirlik vererek yuku de dagitabiliyorsunuz.
Ben hem bootstrap.ini de gateway ve lokasyon degiskenlerini kullandim hem de eger lokasyonlardan birine eslesmedigi durumda LocationServer.xml i kullanmasi icin konfigure ettim.
BootStrap.ini de yapmaniz gereken
[Settings] altinda Priority i degistirmeniz olacak, boylelikle islem once Gateway eslesmelerine oncelik verecek ornegin :
[Settings]
Priority=DefaultGateway,Default
Daha sonra gatewayleri ve lokasyonlari tanimlayacaksiniz, ornegin
[Default Gateway]
192.168.1.1=Istanbul
192.168.3.1=Ankara
Daha sonra lokasyona ait ozellikleri asagidaki sekilde tanimlayabilirsiniz.
[Istanbul]
DeployRoot=\\IstanbulSunucunuz\DeploymentShare$ (MDT2010 oncesinde Distribution$)
[Ankara]
DeployRoot=\\AnkaraSunucunuz\DeploymentShare$ (MDT2010 oncesinde Distribution$)
Ikinci oncelik ise varsayilan yani Default, bu eslesme olmamasinda kullanicak ana yontem
[Default]
Buraya eslesme olmazsa kullansin diye bir sunucu tanimlabilirsiniz veya bos birakip sistemin LocationServer.xml okumasini isteyebilirsiniz.
Yukaridaki bolge degiskenlerine elbette normalde kullanabildiginiz UserID, UserDomain, SkipBDDWelcome vs gibi degerleri kullanabilirsiniz.
LocationServer.xml i yaratmak icin MDT dokumanini incelemeniz gerekiyor cunku kurulum klasorlerinde bulamayacaksiniz. Ben burada bir ornegi sizinle paylasacagim

Ornegin yukaridaki gibi bir XML i yaratip Disk:\DeploymentShare\Extra Files\Deploy\Control altina kopyalayip imaji tekrar olusturursaniz boot sirasinda eger herhangi bir deployroot tanimi bulunamaz ise sistem size xml de tanimlamis oldugunuz sunuculari listeleyecektir. Extra Files klasorunu MDT de Share ozelliklerine Extra Files kismindan tanimlamalisiniz ki dosyayi imaj icina alsin, bunu atlamayiniz.
Ayni XML de bolgeye has ozellikleri de tanimlayabilirsiniz , ornegin alan kodu icin

Fakat
Scripts\DeployWiz_Validation.vbs dosyasinda asagidaki kismi bulun
.
.
ValidateDeployRoot = FALSE
Do
On Error Resume Next
Err.Clear
If oFSO.FileExists(DeployRoot.value & "\Control\OperatingSystems.xml" ) then
.
.
ve su sekilde eklemeyi yapin, normalde asagidaki ek daha alt satirlarda zaten degiskenleri okumak icin var ancak bu kod kullanici haklari size sorulduktan sonra calistigi icin, kullanici bilgileri icin kullanilamamakta, biz kullanici haklari kismindan once okuyacagiz parametrelerimizi,
.
.
ValidateDeployRoot = FALSE
For each oItem in oXMLSiteData.selectNodes("//servers/server")
If SiteList.value = oUtility.SelectSingleNodeString(oItem,"serverid") then
For each oVariable in oItem.selectNodes("otherparameters/parameter")
Set oName = oVariable.Attributes.getQualifiedItem("name","")
If not oName is Nothing then
oProperties(oName.Value) = oVariable.Text
End if
Next
End if
Next
Do
On Error Resume Next
Err.Clear
If oFSO.FileExists(DeployRoot.value & "\Control\OperatingSystems.xml" ) then
.
.
Daha sonra asagidaki bolumu
.
.
oEnvironment.Item("UserID") = ""
oEnvironment.Item("UserDomain") = ""
oEnvironment.Item("UserPassword") = ""
.
.
su sekilde degistirin ki , XML den okudugumuz bilgileri eslestirelim,
.
.
oEnvironment.Item("UserID") = oProperties("UserID")
oEnvironment.Item("UserDomain") = oProperties("UserDomain")
oEnvironment.Item("UserPassword") = oProperties("UserPassword")
.
.
Asagidakileri de yukarida verilen ornekteki gibi parametrelere ekleyiniz.

Iyi gunler.
Not:XML leri imaj seklinde koydum cunku blogger xml leri algilayip sadece atanmis degerleri gosteriyordu.
17 Jul 2011
Script ile Windows Registry de bir kayidin varligini dogrulamak
Asagidaki script ile Windows Registry sinde bir kayidin varligini kontrol edebilirsiniz, bir uygulama paketlerken ihtiyacim olmustu belki sizlerinde ihtiyaci olur.
Set WshNetwork = WScript.CreateObject("WScript.Network")
strComputer = WshNetwork.ComputerName
Const HKEY_CURRENT_USER = &H80000001
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Ornek\"
strValueName = "OrnekObje"
oReg.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue
Wscript.Echo "Ornek deger: " & strValue
Ornegin degerin istediginiz degere esit olup olmadigini asagidaki gibi cok basit bir ekleme ile kontrol edebilirsiniz.
if strValue = 1 then
Wscript.echo "Aktif"
else
wscript.echo "Pasif"
end if
Set WshNetwork = WScript.CreateObject("WScript.Network")
strComputer = WshNetwork.ComputerName
Const HKEY_CURRENT_USER = &H80000001
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
strKeyPath = "Software\Ornek\"
strValueName = "OrnekObje"
oReg.GetStringValue HKEY_CURRENT_USER,strKeyPath,strValueName,strValue
Wscript.Echo "Ornek deger: " & strValue
Ornegin degerin istediginiz degere esit olup olmadigini asagidaki gibi cok basit bir ekleme ile kontrol edebilirsiniz.
if strValue = 1 then
Wscript.echo "Aktif"
else
wscript.echo "Pasif"
end if
13 Jul 2011
Yuklu Windows Installer versiyonunu bulmak
Bilgisayarinizda yuklu Windows Installer versiyonunu bulmak icin normalde Windows\System32 klasoru altindaki MSI.DLL dosyasinin ozelliklerine girmek yeterlidir. Ayni zamanda MSIEXEC komutunu calistirarak ta versiyonu gorebilirsiniz, ancak bazi versiyonlarda MSIEXEC guncellenmediginden bazen farkli versiyonlara rastlamaniz mumkundur, bu sebebple MSI.DLL i kontrol etmek size daha kesin sonuc verecektir.
Bu kontrolu script ile yapmak isterseniz asagidaki kucuk vbs kodunu kullanabilirsiniz, kodu bir text dosyasina yapistirip takisini .vbs yapmaniz yeterli olacaktir.
set WI = createobject("windowsinstaller.installer")
msgbox WI.version
Bu kontrolu script ile yapmak isterseniz asagidaki kucuk vbs kodunu kullanabilirsiniz, kodu bir text dosyasina yapistirip takisini .vbs yapmaniz yeterli olacaktir.
set WI = createobject("windowsinstaller.installer")
msgbox WI.version
1 Jul 2011
VBScript : Dosya okuma bozuk karakterler
Az once bir VB script yazarken, okuyup isleyip tekrar olusturdugum bir text dosyasinin ciktisinin hatali olmasi uzerine, okunan satirlari ekrana verince asil kaynakla alakasi olmayan bozuk karakterler ile karsilastim. Ornegin : ÿþ

Bunun uzerine sorunun acmaya calistigim dosyayi ASCII modunda acamaya calistigimdan kaynaklandigini buldum. Dosyayi dir >test.txt gibi bir sekilde olusturmustum. Bu tip bir sorunla karsi karsiya iseniz okuyacaginiz dosyayi acar iken hangi kodlama ile acacaginiza dikkat etmeniz gerekiyor.
Bunun icin asagida gozuken acilis sekilleri icin gerekli degerleri dosyanizi acar iken kullanmaniz gerekmekte.
Open Using System Default icin > TristateUseDefault =-2
Open File As Unicode icin > TristateTrue=-1
Open File As ASCII icin > TristateFalse=0
Ornegin:
Const ForReading = 1
Const TristateUseDefault=-2
Dim objFSO
Set objFile = objFSO.OpenTextFile("C:\WDSPendingDevices.txt", ForReading, True, TristateUseDefault)

Bunun uzerine sorunun acmaya calistigim dosyayi ASCII modunda acamaya calistigimdan kaynaklandigini buldum. Dosyayi dir >test.txt gibi bir sekilde olusturmustum. Bu tip bir sorunla karsi karsiya iseniz okuyacaginiz dosyayi acar iken hangi kodlama ile acacaginiza dikkat etmeniz gerekiyor.
Bunun icin asagida gozuken acilis sekilleri icin gerekli degerleri dosyanizi acar iken kullanmaniz gerekmekte.
Open Using System Default icin > TristateUseDefault =-2
Open File As Unicode icin > TristateTrue=-1
Open File As ASCII icin > TristateFalse=0
Ornegin:
Const ForReading = 1
Const TristateUseDefault=-2
Dim objFSO
Set objFile = objFSO.OpenTextFile("C:\WDSPendingDevices.txt", ForReading, True, TristateUseDefault)
Subscribe to:
Posts (Atom)