Showing posts with label Scripting. Show all posts
Showing posts with label Scripting. Show all posts

Friday, 11 November 2011

Create Desktop Shortcut with Script

Hi all

Today, I have received an application to deploy with SMS Server 2003, I had to create a MSI Package and some scripts to make that application installation most user friendly, actualy something doesn't need user interaction. So I have needed a script that can find logged user profile folder and create a desktop shortcut to the configuration file in user profile folder.

I have found an article about how to create desktop shortcuts at Technet http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_aytf.mspx?mfr=true , it is detailed enough to understand how to do it,

Technet Script :
Set objShell = WScript.CreateObject("WScript.Shell")
strDesktopFolder = objShell.SpecialFolders("AllUsersDesktop")
Set objShortCut = objShell.CreateShortcut(strDesktopFolder & "\IIS Manager.lnk")
objShortCut.TargetPath = "%SystemRoot%\System32\Inetsrv\iis.msc"
objShortCut.Save

 

As you see above script creates WshShortcut object by calling CreateOBject, than it defines Desktop folder path with strDesktopFolder by AllUsersDesktop value. But we will change this script to locate and crete a desktop shortcut of a file that unique for every user.

First of all we need to find logged users profile path, to do this we will get USERSPROFILE value from Windows Environment Settings by adding this line

UsersProfile = objShell.ExpandEnvironmentStrings("%USERPROFILE%")

now we know logged users profile path has defined in UsersProfile (e.g. C:\Documents and Settings\OShener)

*Tip : You can get another Windows Environment variables values by using objShell.ExpandEnvironmentStrings by changing variable name in (%%) , you can check your existing environment variables by running set command in command promt too.

So where is our user specific target file for shortcut ? Let assume it is located in DW folder and the DW folder is in the the logged users profile folder. Now we are going to define a variable to fix the target file path with this line:

objShortCut.TargetPath = UsersProfile & "\DW\DW.conf"

and to find and define logged users desktop path to a variable we add this line to the script too

strDesktopFolder = objShell.SpecialFolders("Desktop")

and we have to define the Desktop Shortcut location before create it

Set objShortCut = objShell.CreateShortcut(strDesktopFolder & "\DWConf.lnk")

Ok, let tidy up the script and see what we have now ?
Set objShell = WScript.CreateObject("WScript.Shell")
UsersProfile = objShell.ExpandEnvironmentStrings("%USERPROFILE%")
strDesktopFolder = objShell.SpecialFolders("Desktop")
Set objShortCut = objShell.CreateShortcut(strDesktopFolder & "\DWConf.lnk")
objShortCut.TargetPath = UsersProfile & "\DW\DW.conf"
objShortCut.Save

If you wish you can add different properties to your shortcut too, like Windows HotKey, Description, Working Folder, only thing you need to do that add ObjShortcut properties as : objShortCut.HotKey = "Ctrl+Shift+D" and refer to the link : http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_aytf.mspx?mfr=true

 

Script ile masaustune kisayol yaratmak

Merhaba

SCCM ile dagitmam gereken bir uygulama gecti elime, uygulamanin konfigurasyon dosyasini ise script ile kurulum sirasinda oturum acan kullaniciya gore otomatik olarak duzenlemek ve olusutulan konfigurasyon dosyasina ait bir kisayolu yine oturum acan kullanicinin masaustune yerlestirmem gerekti.
Technet sayfalarinda yeterince detayli bir script bulunmakta simdi bu scripti nasil bu amaca uygun hale getirebildigimize bakalim.

Mevcut script :
Set objShell = WScript.CreateObject("WScript.Shell")
strDesktopFolder = objShell.SpecialFolders("AllUsersDesktop")
Set objShortCut = objShell.CreateShortcut(strDesktopFolder & "\IIS Manager.lnk")
objShortCut.TargetPath = "%SystemRoot%\System32\Inetsrv\iis.msc"
objShortCut.Save

 

Yukarida goruldugu gibi WshShortcut objesi CreateObject ile cagrilarak yaratildiktan sonra strDesktopFolder'a AllUsersDesktop degeri atanmakta objShortCut.TargetPath ile de kisayolun cagiracagi obje tanimlanmakta , ancak biz her kullanicinin kendi profil klasorunde duran bir dosya icin kisayol yaratacagimiz icin, hem masaustu hem de cagirilacak dosyanin diskteki yerini oturum acan kullaniciya gore dinamik olarak belirlemek zorundayiz , bu amaca ulasmak icin basit bir sekilde sisteme oturum acan kullanicinin profil klasorunu belirleyecegiz.

UsersProfile = objShell.ExpandEnvironmentStrings("%USERPROFILE%")

satiri ile sisteme oturum acmis olan kullanicininin profil klasoru adresini UsersProfile degiskenine atiyoruz. Bunun sonucunda UsersProfile oturum acan kullanicinin profil klasorune yani ornek vermek gerekirse C:\Documents and Settings\oshener degerini aliyor.

*Ipucu : objShell.ExpandEnvironmentStrings ile Command Prompt da Set komutunu calistirdigimizda gelen listeden farkli obje ve degerlerinide (%...%) kismini degistirerek cekebilirsiniz.

Simdi objShortCut.TargetPath ile kurulum ile yerlestirilen konfigurasyon dosyasinin yerini belirleyelim. Diyelim ki cagiracagimiz dosya kullanici profili klasoru icinde bulunan DW klasoru altinda ki DW.Conf dosyasi olsun,

ConfFile = UsersProfile & "\DW\DW.conf"

ile dosyamizi kaynak adresi ile beraber ConfFile degiskenine atamis,

objShortCut.TargetPath = ConfFile

ile ise yaratacagimiz kisayolun cagiracagi dosyayi gosterdik.

Simdi kisayolumuzun yaratilacagi yeri oturum kullanicinin masaustu bilgisini kullanarak tanimlayalim

strDesktopFolder = objShell.SpecialFolders("Desktop")

komutu ile oturum acan kullanicinin masaustu klasoru adresini cekebiliyoruz , eger bu imkan olmasa idi , daha once yarattigimiz UsersProfile degerine & "\Desktop" metnini ekleyerek ayni bilgiyi yaratabilirdik.

Set objShortCut = objShell.CreateShortcut(strDesktopFolder & "\DWConf.lnk")+

komutu ile de yaratacagimiz kisayolun tam hedefini tanimliyoruz.

Simdi degisiklikleri toparlayarak nasil bir scriptimiz oldu kontrol edelim.
Set objShell = WScript.CreateObject("WScript.Shell")
UsersProfile = objShell.ExpandEnvironmentStrings("%USERPROFILE%")
strDesktopFolder = objShell.SpecialFolders("Desktop")
Set objShortCut = objShell.CreateShortcut(strDesktopFolder & "\DWConf.lnk")
objShortCut.TargetPath = UsersProfile & "\DW\DW.conf"
objShortCut.Save

Eger arzu ederseniz yine yukarida adreste bulabileceginiz degerler ile kisayolunuz Kisayol tusu, aciklama, calisma klasoru belirleyebilirsiniz bunun icin tek yapmaniz gereken objShortCut. ile degeri tanimlamak olacaktir. (Ornek : objShortCut.HotKey = "Ctrl+Shift+D")

Sunday, 17 July 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

Friday, 1 July 2011

VBScript : OpenTextFile Weird/Bad Characters

I have just experienced a problem while trying to read a text file by vbscript. When I echo lines to screen I saw an empty line shows ÿþ, and other weird/bad characters.
Screen_04 21-Jan-09 14.47

Than I realized the problem is about the file's encoding. The text file I was trying to read is created by printing characters to a file. (dir c:test.txt).

So don't forget to define encoding type while opening a file, check the three parameters below that you will use as a paramater for OpenTextFile

Open Using System Default > TristateUseDefault =-2
Open File As Unicode icin > TristateTrue=-1
Open File As ASCII icin > TristateFalse=0

Example:

Const ForReading = 1
Const TristateUseDefault=-2
Dim objFSO
Set objFile = objFSO.OpenTextFile("C:WDSPendingDevices.txt", ForReading, True, TristateUseDefault)

( VBScript : OpenTextFile Weird/Bad Characters )

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 : ÿþ
Screen_04 21-Jan-09 14.47

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)

( VBScript : Dosya okuma bozuk karakterler )

Friday, 3 June 2011

Zaman Dilimi değerini komut satırından değiştirmek.

Eger timezone degerini komut satirini kullanarak degistirmek istiyorsaniz, bunu gerceklestirmek icin control.exe yi kullanabilirsiniz.

Oncelikle ayarlamak istediginiz TimeZone degerinin ismini tam olarak bulmaniz gerekecek, bunun icin
HKLMSoftwareMicrosoftWindows NTCurrentVersionTime Zones
altinda bulunan listeyi kullanabilirsiniz.

Ornegin :
control TIMEDATE.cpl,,/Z Romance Standard Time
komutu ile Time Zone degerini (GMT+01:00) Brussels, Copenhagen, Madrid, Paris 'e ayarlayabilirsiniz.

veya

Tarih ve Saat ayarlari penceresindeki Zaman Dilimi kisminda bulunan degerleri yazarakta bunu yapabilirsiniz.

TimeZone

Ornegin :
control TIMEDATE.cpl,,/Z (GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London

( Zaman Dilimi değerini komut satırından değiştirmek. )

Setting TimeZone value from Command Prompt

If you'd like to change timezone information by using command prompt you can use control.exe to do that.

First of all you have to find out Time Zone name you wish to set, you can use the list in

HKLMSoftwareMicrosoftWindows NTCurrentVersionTime Zones

For example :control TIMEDATE.cpl,,/Z Romance Standard Time
sets Time Zone value to (GMT+01:00) Brussels, Copenhagen, Madrid, Paris

or

you can write Time Zone information that you can see in Date and Time Properties>Time Zone Window

TimeZone

For example :control TIMEDATE.cpl,,/Z (GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London
( Setting TimeZone value from Command Prompt )

Wednesday, 8 December 2010

Script ile bilgisayardaki IP ve MAC adreslerini listelemek

Asagidaki scripti kullanarak bilgisayarinizdaki tum network kartlari icin atanmis IP adreslerini listeleyebilirsiniz. Scripti calistirdiginizda size IP ve adreslerinizi sirayla gosterecektir.
strComputer = "."

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")

Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")

For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
WScript.Echo IPConfig.IPAddress(i)
Next
End If
Next

Vb_showIp Vb_showMac

Monday, 5 July 2010

Script ile ISA Server Cache'ini temizlemek

ISA Server'da Cache dosyasini temizlemek icin asagidaki basit script ten yararlanabilirsiniz, aslinda manual olarak yaptigimiz Firewall servisinin durdurulmasi , ardindan Cache dosyasinin silinmesi ve servisin yeniden baslatilmasindan farkli bir islem yapmamakta, ancak otomatize etmek icin duz bir batch dosyasindan daha faydali olacaktir surucu ismi statik olmadigi icin ve birden fazla dosyaniz var ise bulup temizleyebilecegi icin.

Unutmayinizki Firewall servisi bu islem sirasinda durdurulup yeniden baslatilacagi icin baglantilarinizda kesinti olacaktir.


Set root = CreateObject("FPC.Root")
Set server = root.GetContainingServer()
server.StopFirewallService()
Set cacheDrives = server.CacheDrives
Set fso = CreateObject("Scripting.FileSystemObject")
For Each cacheDrive In cacheDrives
cacheFilePath = CacheDrive.Name & "\urlcache\Dir1.cdat"
WScript.echo "Cache dosyasinin yeri: " & cacheFilePath
fso.DeleteFile cacheFilePath
Next
server.StartFirewallService()
WScript.Echo "Cache icerigi temizlenmistir"

Friday, 5 March 2010

Script ile WINS sunucusu bilgilerini ag kartinda ayarlama

Bilgisayarinizin ag ayarlariniza WINS sunucusu veya sunuculari eklemek istiyorsaniz asagidaki scripti kullanarak bunu rahatca yapabilirsiniz. strPrimaryServer ve strSecondaryServer degiskenlerini WINS sunucunuzun veya sunucularin IP adres bilgileri ile guncelleyiniz, sadece bir adet sunucunuz var ise strSecondaryServer server degiskenini ve SetWINSServer dan strSecondaryServer i kaldirabilirsiniz.

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colNetCards = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objNetCard in colNetCards
strPrimaryServer = "192.168.1.100"
strSecondaryServer = "192.168.1.200"
objNetCard.SetWINSServer strPrimaryServer, strSecondaryServer
Next

Monday, 22 February 2010

Bir OU icindeki tum kullanicilarin sifresini degistirme

Active Directory niz de ki bir Organizational Unit icerisindeki tum kullanicilarin sifrelerini degistirmek istiyorsaniz bu islemi asagidaki scripti kullanarak rahatca yapabilirsiniz.
oContainer satirindaki LDAP adresini kendi OU nuzu gosterecek sekilde yapmayi unutmayiniz.

Ornegin domain adiniz firmam.com olsun Kullanicilar adinda bir OU nuz olsun ve bunun altinda Muhasebe adinda bir OU nuz var bu OU icindeki kullanicilarin sifrelerini degistirmek istiyorsunuz bu durumda asagidaki satiri "LDAP://OU=Muhasebe,OU=Kullanicilar,DC=Firmam,DC=com" seklinde degistirmeniz gerekecektir, deneme yapmaniz icin gecici bir OU ve icinde bir kullanici yaratip test etmenizi ayrica tavsiye ederim.

Dim oContainer
Set oContainer=GetObject("LDAP://OU=Ouname,DC=Domain,DC=com")
ModifyUsers oContainer
Set oContainer = Nothing
WScript.Echo "Finished"

Sub ModifyUsers(oObject)
Dim oUser
oObject.Filter = Array("user")
For Each oUser in oObject
oUser.SetPassword "YeniSifre1"
oUser.SetInfo
Next
End Sub

Thursday, 1 October 2009

Script ile DNS Suffix duzenleme ve ekleme

Bilgisayarinizdaki DNS suffix leri script ile duzenlemek veya tanimlamak icin asagidaki ornekten yararlanabilirsiniz, asagidaki ornekte gormus oldugunuz istanbul.domainim.com ve ankara.domainim.com son eklerini size uygun olacak sekilde degistiriniz, isterseniz daha fazlasini benzer formatta ekleyebilirsiniz.

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set objNetworkSettings = objWMIService.Get("Win32_NetworkAdapterConfiguration")
arrDNSSuffixes = Array("hr.fabrikam.com", "research.fabrikam.com")
objNetworkSettings.SetDNSSuffixSearchOrder(arrDNSSuffixes)

Wednesday, 19 December 2007

DNS sunucusu arama sırasını Script ile değiştirmek



Asagidaki scriptten yararlanarak network kartinizin TCP/IP ayarlarinda bulunan DNS sunuculari bolumunu konfigure edebilirsiniz, asagidaki ornegin birincil icin 192.168.1.1 , ikincil icin ise 192.168.1.2 IP adresli DNS sunuculari icin oldugunu goreceksiniz, scriptin bu kisimlari kendi ihtiyacaniz dogrultusunda degistirip kullanabilirsiniz.
On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colNetCards = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objNetCard in colNetCards
arrDNSServers = Array("192.168.1.1", "192.168.1.2")
objNetCard.SetDNSServerSearchOrder(arrDNSServers)
Next