Windows DST Hotfix KB3093503 için Toplu Yükleme Aracı ve Yaz Saati Uygulaması 2015

Güncel: Bakanlar kurulunun bundan sonra sürekli yaz saatinde devam edileceği yönünde aldığı karar sonrası 30 ekim 2016 tarihine kadar Windows’lar üzerinde yapılması gerekenlerle ilgili şuraya bakabilirsiniz.

25 Ekim 2015 04:00’da bitmesi planlanan Yaz Saati Uygulaması (gün ışığından yararlanma, dst) bu yıl resmi bir karar ile 8 Kasım 2015 04:00 tarihine ertelenmişti. 20 Ekim 2015 tarihinde ise (TR’de görünmesi 21 Ekim) Windows işletim sistemleri için DST bitişini 8 Kasım’a erteleyen KB3093503 numaralı bir hotfix yayınlandı. Ancak büyük oranda Türkiye’de yer alan belirli bir grup Windows’a hitap eden bu fix Windows Update üzerinde yer almadı ve haliyle WSUS’lara da gönderilmedi. Bunun yanı sıra Windows 10 için olan paket dışındaki hotfix paketleri Update Catalog üzerinde de yer almıyor; Yani elinizdeki WSUS’a manual import etme şansınız da yok. Bu kabul edilemez bir durum! GPO ile yükleme hayaliniz varsa üzgünüm çünkü GPO mekanizması varsayılan haliyle ancak MSI dağıtabilir. Ama hotfix MSU/CAB formatında olduğu için önce MSI’a dönüştürmeniz veya yine bir startup script basmanız gerekir. Özetle eğer elinizde merkezi bir uygulama dağıtım çözümü yoksa bu hotfix’i tüm sistemler üzerine manuel yüklemeniz ve ardından kontrol etmeniz gerekiyor. Ne güzel değil mi… Stajyer kardeşlerimiz isyanda :)

25 Ekim sabahı ve sonrasında 1 saat geri kalmış Windows’lar için yapılması gerekenleri şu yazıda toparladım.

Hotfix geçilmemiş ve DST bitiş zamanı hala 25 Ekim 2015 04:00 görünen Active Directory Domain üyesi Windows’lar saat bilgisini zaten DC’den aldıkları için Pazar sabahı geri kalmayacaklarını düşünenler varsa üzgünüm ama yanılıyorlar. Bu bir şehir efsanesi :) çünkü mesele Local Time ile ilgili.

Client’ların PDC gibi NTP tabanlı servislerden aldığı zaman bilgisi UTC‘dir. Client OS, NTP’den aldığı bu zaman bilgisi üzerine Time Zone ayarlarına bakarak meridyen (Türkiye için +2 saat) ve gerekli ise DST (+1 saat) ilave yapar. İşte bu kombinasyonla ortaya çıkan zamana Local Time denir. Bu yüzden PDC/DC saati ne olursa olsun, zamanı geldiğinde Client işletim sistemi sene başında verdiği 1 saati geri alır ve DC bu konuda baskın olamaz; çünkü Local Time‘ı yöneten DC değil Client OS’tir. Ayrıca bu durum DC/Client authentication’larını etkilemez ve Client’lar 1 saat geri kalsa dahi normal şekilde logon olabilir çünkü Kerberos auth için dikkate alınan zaman bilgisi Local Time değil System Time‘dır ve o da UTC‘dir; yani ekleme çıkartma yapılmamış salt zaman bilgisi…

Aslında bunu test etmenin yolu çok basit: Şu an Domain üyesi bir client üzerinde DST’yi disable edin, saatin anında 1 saat geri alındığını göreceksiniz. Bir süre bu şekilde bekleyin, hatta w32tm /resync falan yapın, ama DC ile aradaki 1 saat farkın asla kapanmadığını göreceksiniz. Gerçi test etmeye de gerek yok, birkaç saat sonra gerçek geçiş anı yaşanacak :)

Windows Server 2003 ve Windows XP’ler için DST ertelemesiyle ilgili bir çözüm ekledim.

Get-DstInfo.ps1 Doğrulama Aracı: Install-DstHotfix.ps1‘i yaptığı işi veya ortamınızın Yaz Saati Uygulaması bitişine hazır olup olmadığını anlamak ve topluca raporlamak için yeni bir script yayınladım: Get-DsInfo.ps1 ve kullanım kılavuzu

Sosyal ağlar üzerindeki bazı paylaşımlarda hotfix yüklemek yerine çeşitli registry kayıtlarının oluşturulmasıyla ilgili öneriler gördüm. Yapılan kayıt girişleri ile belki o an doğru Time Zone ve DST zamanına ulaşmak mümkün olabilir ama ya bir sonraki DST zamanı geldiğinde sistem nasıl davranacak? Peki bir gün sonra düzgün çalışacağının garantisini kim veriyor? Bunlar belirsiz noktalar. Eğer tüm sistemler için DST davranış değişikliği sadece bir grup registry kaydı oluşturmak ile çözülebiliyor olsaydı, bence bu yöntem mutlaka açıklanan resmi bir bilgiler arasında da yer alırdı. Yine de registry müdahaleleri çalışmaz veya kesinlikle soruna neden olur demiyorum, ama yayınlanmış bir hotfix varken risk almaya değmez diyorum. Bana soracak olursanız ve eğer DST için bir müdahalede bulunmaya kararverdiyseniz bu işin en sağlıklı ve resmi uygulama yöntemi ilgili hotfix’i yüklemektir.

Windows DST Hotfix KB3093503’ü merkezi ve topluca dağıtmak için hazırladığım aşağıdaki PowerShell script’in işinizi oldukça kolaylaştıracağına eminim.

install-dsthotfix-console

DST Değişikliğine Hazırlıklı Olmak Neden Önemli?

Sıradaki DST, saatlerin 04:00’de bir saat geri alınması ile gerçekleşecek. Bu durum 03:00-04:00 zaman aralığının o gün tüm işletim sistemleri ve yazılımlar için iki kez yaşanması demek. Yani eğer önlem alınmamış ise bu aralığa denk gelen mesela yedekleme görevleri gibi, eşitlemeler gibi envai çeşit zamanlamış görev ve çeşitli process’ler hep 2’şer kez çalışacak. Diğer taraftan sistemler ve entegrasyonlar arası uyumsuzluk, veritabanı kayıtlarının tutarsızlığı, log çakışmaları ve bu durumların gerçek hayata yansıması gibi daha da önemli riskler söz konusu. İşin doğası gereği var olan bu riskler noktasında Windows DST hotfix’ler çözüm olamıyor çünkü bu gibi durumların tespit edilmesi ve sistem/process bazlı olarak ayrıca ele alınması gerekiyor.

Windows için yayınlanan DST hotfix ise ülke genelinde 8 Kasım 04:00’a ertelenen 1 saat geri alma meselesi için işletim sistemi davranışını değiştiriyor ve bu değişikliğin 25 Ekim’de gerçekleşmesinin önüne geçiyor. Aynı zamanda doğru tarihe erteliyor. Böylece sistem saatleri ülke saatiyle eşit ilerlemiş oluyor.

Script Hakkında Önemli Bilgiler

  • Her zaman son sürümü kullanın ve hatta 25 Ekim öncesi belirli aralıklarla sayfanın en altındaki “Sürüm Geçmişi” bölümünü takip ederek önemli bir güncelleme olup olmadığını kontrol edin. Mesela v01 ve v02’yi çalıştıranların mutlaka son sürümü tekrar çalıştırmalarını öneririm.
  • Sadece KB3093503 için optimize edilmiştir.
  • Parametrik değildir çünkü hotfix’in dün geldiğini ve 25 Ekim’e çok az kaldığını düşünürsek bir an önce release etmek için tasarımı özellikle sınırlı tuttum. Mesela bilgisayarları kontrol etsin ama sadece raporlama yapsın, hotfix yüklemesin gibi bir opsiyonlar yok.
  • Script PowerShell tabanlıdır ve bazı işler için PsExec.exe, wusa.exe, tzutil.exe gibi araçları da kullanır.
  • PsExec.exe’yi Invoke-Command cmdlet’i yerine özellikle tercih ettim çünkü uzak bilgisayara Invoke-Command yapabilmek için özellikle belirli işletim sistemi sürümlerinde WinRM erişiminin Enable-PSRemoting gibi bir yöntemle önceden yapılandırılmış olması gerekiyor. Bunu uzaktan yapılandırmak pek kolay değil çünkü zaten kendisi uzaktan yapılandırmanın kapısını açan anahtar durumunda :) Bu yüzden en temizi PsExec.exe ile uzak bilgisayar üzerindeki exe’lere parametre göndermek oldu. Maşallah PsExec duvarlardan bile geçebiliyor…
  • Script yüklemesi gereken hotfix sürümünü otomatik olarak tespit eder ve uzak bilgisayara kopyalayıp yükler. Sonra MSU dosyasını siler.
  • Time Zone ve DST bilgilerini de kontrol eder ve gerekli ise (UTC+02:00) Istanbul olarak güncelleyip DST’nin aktif olmasını sağlar.
  • Eğer uzak bilgisayar üzerinde KB3093503 zaten yüklü ise herhangi bir yükleme yapmaz. Ama yine de Time Zone ve DST bilgilerinin doğruluğunu kontrol eder ve gerekli ise düzeltir. Mesela bu özelliği sayesinde, hotfix’in zaten yüklü olduğu ortamlarda da çalıştırıp mevcut durumu raporlayabilir, Time Zone ve DST ayarı unutulmuş sistem varsa (UTC+02:00) Istanbul olmasını sağlayabilirsiniz.
  • Ortamında v01 sürümünü çalıştıranlara, önemli bir bug düzelttiğim son sürümü de çalıştırmalarını tavsiye ederim. Çalışma sırasında “Önceden Yuklenmis” bilgisi döner ve o sistemler üzerine tekrar hotfix yüklemez ama Time Zone ve DST ayarları eksik ise onları update eder.
  • Yükleme sonrası oluşan operasyon-kaydi.csv çıktısı önemlidir. Özellikle içerisindeki Yeni Time Zone, Yeni DST ve Yeni Ay sütunlarında (UTC+02:00) İstanbul 8.11.2015 04:00:00 Kasim gördüğünüzden emin olun. Bu bilgiler o uzak bilgisayar için yüklemenin ve yapılandırmanın eksiksiz tamamlandığı anlamına gelir. Biraz daha aşağılarda örnek ekran görüntüsü var.
  • Mesela elinizde 120 bilgisayarlık bir liste var. Script’i 3 farklı sunucuya kopyalayıp listeyi de 3’e bölerek yükleme işlemini çok daha kısa sürelerde tamamlayabilirsiniz.

Sizler de aşağıdaki bilgiler doğrultusunda testlerinizi yapın ve gerçek yükleme için hazırlığa başlayın. Bunun yanında ara ara burayı da takip edin. Böylece hem gelen geri bildirimlerden hem de ekleyeceğim yeni bilgilerden haberdar olma şansınız olur. Bu Post’u sık sık güncelleyeceğim.

Sizlerin geri bildirimi önemli: Önerim script’i öncelikle belirli bir grup bilgisayar için çalıştırmanız ve sonuçları izlemeniz yönündedir. Bu sıradaki gözlemlerinizi de yorum şeklinde yazının altına eklerseniz bir geri bildirim döngüsü oluşturabilir ve gerekli durumlarda hızlıca düzeltme çıkartabiliriz.

Windows DST Hotfix Yükleme Script’i Neler Yapıyor? Nasıl Yapıyor?

  • Script console ekranına yazarak başlar.
  • bilgisayar-listesi.txt isimli dosyadan yükleme yapılacak uzak bilgisayarların listesini alır.
  • Sırayla bilgisayarlara bağlanıp önce KB3093503’ün yüklü olup olmadığını kontrol eder. Eğer hotfix yüklü ise yeni bir yükleme yapmaz ve Time Zone & DST ayarlarını kontrol eder. Eğer (UTC+02:00) Istanbul seçili ise herhangi bir işlem gerçekleştirmeden raporlar ve bir sonraki bilgisayara geçer.
  • Eğer hotfix yüklü değil ise önce işletim sistemi sürümünü ve mimarisini tespit eder. Ardından bu bilgilere göre hangi hotfix’i yükleyeceğine karar verir.
  • Yüklenecek hotfix dosyasını seçip çalıştığı dizinden alır ve uzak bilgisayarın Windows\temp dizini altına kopyalar. Daha sonra PsExec üzerinden wusa.exe‘ye parametreler gönderip kurulumu gerçekleştirir. Bu sırada uzak bilgisayar ekranında herhangi bir uyarı veya pencere ortaya belirmez ve uzak bilgisayar kesinlikle restart yapılmaz. Zaten çoğu zaman restart gerekmiyor, ama yine de bazen gereken durumlar olabiliyor. Bu güvence için wusa.exe‘yi /quiet ve /norestart parametreleriyle birlikte tetikler.
  • Ardından hotfix’in doğru bir şekilde yüklenip yüklenmediğini kontrol eder. Yükleme başarılı ise Time Zone ve DST ayarlarını kontrol eder. Eğer (UTC+02:00) Istanbul seçili değilse tzutil.exe ile seçer ve DST‘yi de aktif eder. Ayrıca mevcut (önceki) ve yeni Time Zone bilgilerini operasyon-kaydi.csv içerisinde raporlar.
  • Uzak bilgisayar üzerinde Windows\Temp altına kopyaladığı MSU paketini siler.
  • Çalışma tamamlandığında tüm operasyon kaydını operasyon-kaydi.csv içerisine yazar. Excel’de açıp biraz biçimlendirme ile kullanışlı bir listeye dönüştürebilirsiniz.

Windows DST Hotfix Yükleme Script’i Nasıl Kullanılır?

Runtime Environment için ön gereksinimler

Script’i çalıştıracağınız sunucu üzerinde aşağıdaki gereksinimleri sağlayın.

  • Şart değil ancak runtime environment olarak (yani script’i çalıştıracağınız sunucu) mümkünse bir Windows Server 2012 R2 tercih edin. Aynı zamanda Windows Server 2012, Windows Server 2008 R2 de desteklenir.
  • Runtime environment görevi üstlenen bunu sunucu üzerinde, hotfix yüklenecek uzak sistemlerde yönetici (administrators) yetkisine sahip bir hesap ile oturum açın. Tasarım gereği alternatif credentials girme şansı olmadığı için Active Directory Domain ortamında kullanmanızı öneririm. Tek bir hesap, tüm uzak bilgisayarlar üzerinde yetkili olmalı.
  • Disk üzerinde bir repository folder oluşturun; mesela C:\Source
  • Install-DstHotfix.ps1 scrip dosyasını buradan indirin ve C:\Source altına kopyalayın.
  • Ortamınızda çalışan işletim sistemi sürümlerine göre KB3093503 bağlantısından gerekli hotfix paketlerini indirin, self-extractor dosyalarını açın ve MSU uzantılı paketleri C:\Source altına taşıyın. Mutlaka MSU uzantılı paketleri çıkartmalısınız. Her işletim sistemi sürümü ve mimarisi için paket farklıdır ve tek tek indirilip açılması gerekir.
hotfix-list
  • PsExec aracını indirin ve C:\Source altına kopyalayın. (zip içerisinde de yer alıyor)
  • bilgisayar-listesi.txt dosyasını aşağıdakilere dikkat ederek oluşturun ve C:\Source altına kopyalayın.
    • Dosya ismi mutlaka bilgisayar-listesi.txt olmalı.
    • bilgisayar-listesi.txt içerisinde sunucu isimleri kullanabileceğiniz gibi IP adreslerine de yer verebilirsiniz. Her ikisi aynı anda da kullanılabilir.
    • Sunucu adreslerini alt alta yazın, her bir satırdan tek sunucu olsun ve isim veya ip adreslerinin sonunda boşluk olmasın. Ayrıca dosyada boş satır yer almasın.

Hotfix yüklenecek uzak bilgisayar için ön gereksinimler

  • Script’in çalıştırıldığı yetkili hesap ile eşleşen Active Directory Domain üyeliği.
  • admin$ paylaşımı kullanılabiliyor olmalı.
  • Antivirus ve Firewall gibi güvenlik katmanlarının uzaktan erişimi ve komut çalıştırmayı engellemeyeceğinden emin olun.
  • Uzaktan yükleme için desteklenen işletim sistemi sürümleri:
    • (32-bit) Windows Vista, Windows 7, Windows 8, Windows 8.1
    • (32-bit) Windows Server 2008
    • (64-bit) Windows Vista, Windows 7, Windows 8, Windows 8.1
    • (64-bit) Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2

Script’i Çalıştırma

1) Windows DST Hotfix KB3093503 uzaktan yükleme Script’ini aşağıdaki bağlantı üzerinden indirin.

Install-DstHotfix Kit zip dosyası indirme bağlantısı

İndirmeden göz atmak isterseniz yaklaşık 900 satırdan oluşan bu Scirpt’in içeriği aşağıda yer alıyor.

#
#
# Windows DST Hotfix KB3093503 Uzaktan Yükleme Script’i
#
# Hazırlayan : Serhat AKINCI
# Geri Bildirim : serhatakinci@gmail.com
# Blog : http://serhatakinci.com
# TW : @serhatakinci
# Oluşturma Tarihi : 21.10.2015
# Son Değişiklik Tarihi : 21.10.2015
# Sürüm : v04
# Kullanım Klavuzu : http://www.serhatakinci.com/index.php/windows-dst-hotfix-kbb3093503-yukleme-araci-yaz-saati-uygulamasi-2015.html
#
#

if(!(Test-Path -Path .\PsExec.exe))
{
Write-Host “Hata: PsExec.exe bulunamadı. Lütfen PsExec.exe aracını $(Get-Location) altına kopyalayıp script’i yeniden çalıştırın.” -ForegroundColor Red
Break
}

[array]$computerList = Get-Content .\bilgisayar-listesi.txt
[array]$hotFixArray = “Windows8.1-KB3093503-v6-x64.msu”,”Windows8.1-KB3093503-v6-x86.msu”,”Windows8-RT-KB3093503-v3-x64.msu”,”Windows8-RT-KB3093503-v3-x86.msu”,”Windows6.1-KB3093503-v3-x64.msu”,”Windows6.1-KB3093503-v3-x86.msu”,”Windows6.0-KB3093503-v3-x64.msu”,”Windows6.0-KB3093503-v3-x86.msu”
$outputArray1 = @()
$startDTM = Get-Date
$itemCount = 1
$sCount = $fCount = 0
$timeZoneTR = “`”Turkey Standard Time`””

function Get-DST
{
param([parameter(Mandatory=$true)][string]$Computer)

$currentYear = (Get-Date).Year
$winLocalTime = Get-WmiObject -ComputerName $Computer -Class Win32_LocalTime
$winTimeZone = Get-WmiObject -Class Win32_TimeZone -ComputerName $Computer

Switch ($winTimeZone.StandardMonth)
{
1 {$stdMonth = “January”}
2 {$stdMonth = “February”}
3 {$stdMonth = “March”}
4 {$stdMonth = “April”}
5 {$stdMonth = “May”}
6 {$stdMonth = “June”}
7 {$stdMonth = “July”}
8 {$stdMonth = “August”}
9 {$stdMonth = “September”}
10 {$stdMonth = “October”}
11 {$stdMonth = “November”}
12 {$stdMonth = “December”}
}

Switch ($winTimeZone.StandardMonth)
{
1 {$outMonth = “Ocak”}
2 {$outMonth = “Subat”}
3 {$outMonth = “Mart”}
4 {$outMonth = “Nisan”}
5 {$outMonth = “Mayis”}
6 {$outMonth = “Haziran”}
7 {$outMonth = “Temmuz”}
8 {$outMonth = “Agustos”}
9 {$outMonth = “Eylul”}
10 {$outMonth = “Ekim”}
11 {$outMonth = “Kasim”}
12 {$outMonth = “Aralik”}
}

[DateTime]$stdDate = “$stdMonth 01, $currentYear $($winTimeZone.StandardHour)`:00:00”

$i = 0
while ($i -lt $winTimeZone.StandardDay)
{
if($stdDate.DayOfWeek -eq $winTimeZone.StandardDayOfWeek)
{
$i++
if($i -eq $winTimeZone.StandardDay)
{
$changeDate = $stdDate
}
else
{
$stdDate = $stdDate.AddDays(1)
}
}
else
{
$stdDate = $stdDate.AddDays(1)
}
}

if($changeDate.Month -ne $winTimeZone.StandardMonth)
{
$changeDate = $changeDate.AddDays(-7)
}

Return $changeDate, $outMonth, ($winTimeZone.Caption).Replace(“,”,” -“)
}

Write-Host “”
Write-Host “###################################################################” -ForegroundColor Yellow
Write-Host “”
Write-Host “Windows DST hotfix (KB3093503) icin Uzaktan Yukleme Araci v04” -ForegroundColor Yellow
Write-Host “”
Write-Host “Desteklenen isletim sistemleri:
Windows Vista, 7, 8, 8.1 (32bit/64bit)
Windows Server 2008, 2008 R2, 2012, 2012 R2 (32bit/64bit)” -ForegroundColor Yellow
Write-Host “”
Write-Host “Hazirlayan: Serhat AKINCI | Geri bildirim: serhatakinci@gmail.com” -ForegroundColor Yellow
Write-Host “”
Write-Host “###################################################################” -ForegroundColor Yellow
Write-Host “”
Start-Sleep -Seconds 2
Write-Host “$($computerList.count) bilgisayar icin KB3093503 hotfix yüklemesi basliyor…” -ForegroundColor Cyan
Write-Host “”
Start-Sleep -Seconds 2

foreach($Computer in $computerList)
{
Write-Host “($($itemCount)/$($computerList.Count)) Yukleme yapilan bilgisayar: $Computer > ” -ForegroundColor Cyan -NoNewline

# OS sürümünü al
if(!($osInfo = gwmi -ComputerName $Computer -Class Win32_OperatingSystem -EA SilentlyContinue))
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Isletim sistemi bilgisi alinamadigi icin yukleme yapilamadi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
else
{
if(Get-HotFix -ComputerName $Computer | ?{$_.HotFixID -eq “KB3093503”}) # Zaten yüklü ise
{
# Başarılı
Write-Host “Gecmiste Yuklenmis” -ForegroundColor Yellow
$Dst = Get-DST -Computer $Computer
$Dst2 = $Dst

if($Dst[2] -ne “(UTC+02:00) istanbul”)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer tzutil.exe /s $timeZoneTR” -PassThru -Wait -WindowStyle Hidden | Out-Null
$Dst2 = Get-DST -Computer $Computer
}

$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarili”
‘Mevcut Time Zone’ = $Dst[2]
‘Mevcut DST’ = $Dst[0]
‘Mevcut Ay’ = $Dst[1]
‘Yeni Time Zone’ = $Dst2[2]
‘Yeni DST’ = $Dst2[0]
‘Yeni Ay’ = $Dst2[1]
‘Aciklama’ = “Hotfix bu bilgisayar uzerinde zaten yuklu durumda.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$sCount++
$itemCount++
}
else # Yüklü değilse
{
$sysDrive = $osInfo.SystemDrive.Replace(“:”,””)

if($osInfo.Version -like “6.3*”) # Windows 8.1 & Windows Server 2012 R2
{
if($osInfo.OSArchitecture -eq “64-bit”) # 64-bit
{
Copy-Item -Path “.\$($hotFixArray[0])” -Destination “\\$Computer\$sysDrive$\Windows\Temp” -EA SilentlyContinue

if(Test-Path -Path “\\$Computer\$sysDrive$\Windows\Temp\$($hotFixArray[0])” -EA SilentlyContinue)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer wusa $($sysDrive):\windows\temp\$($hotFixArray[0]) /quiet /norestart” -PassThru -Wait -WindowStyle Hidden | Out-Null

if(Get-HotFix -ComputerName $Computer | ?{$_.HotFixID -eq “KB3093503”})
{
# Başarılı
Write-Host “Yukleme Basarili” -ForegroundColor Green
$Dst = Get-DST -Computer $Computer
$Dst2 = $Dst

if($Dst[2] -ne “(UTC+02:00) istanbul”)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer tzutil.exe /s $timeZoneTR” -PassThru -Wait -WindowStyle Hidden | Out-Null
$Dst2 = Get-DST -Computer $Computer
}

$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarili”
‘Mevcut Time Zone’ = $Dst[2]
‘Mevcut DST’ = $Dst[0]
‘Mevcut Ay’ = $Dst[1]
‘Yeni Time Zone’ = $Dst2[2]
‘Yeni DST’ = $Dst2[0]
‘Yeni Ay’ = $Dst2[1]
‘Aciklama’ = “Hotfix basarili bir sekilde yuklendi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$sCount++
$itemCount++
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix yuklemesi dogrulanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix dosyasi uzak bilgisayara kopyalanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else # 32-bit
{
Copy-Item -Path “.\$($hotFixArray[1])” -Destination “\\$Computer\$sysDrive$\Windows\Temp” -EA SilentlyContinue

if(Test-Path -Path “\\$Computer\$sysDrive$\Windows\Temp\$($hotFixArray[1])” -EA SilentlyContinue)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer wusa $($sysDrive):\windows\temp\$($hotFixArray[1]) /quiet /norestart” -PassThru -Wait -WindowStyle Hidden | Out-Null

if(Get-HotFix -ComputerName $Computer | ?{$_.HotFixID -eq “KB3093503”})
{
# Başarılı
Write-Host “Yukleme Basarili” -ForegroundColor Green
$Dst = Get-DST -Computer $Computer
$Dst2 = $Dst

if($Dst[2] -ne “(UTC+02:00) istanbul”)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer tzutil.exe /s $timeZoneTR” -PassThru -Wait -WindowStyle Hidden | Out-Null
$Dst2 = Get-DST -Computer $Computer
}

$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarili”
‘Mevcut Time Zone’ = $Dst[2]
‘Mevcut DST’ = $Dst[0]
‘Mevcut Ay’ = $Dst[1]
‘Yeni Time Zone’ = $Dst2[2]
‘Yeni DST’ = $Dst2[0]
‘Yeni Ay’ = $Dst2[1]
‘Aciklama’ = “Hotfix basarili bir sekilde yuklendi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$sCount++
$itemCount++
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix yuklemesi dogrulanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix dosyasi uzak bilgisayara kopyalanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
}
elseif($osInfo.Version -like “6.2*”) # Windows 8 & Windows Server 2012
{
if($osInfo.OSArchitecture -eq “64-bit”) # 64-bit
{
Copy-Item -Path “.\$($hotFixArray[2])” -Destination “\\$Computer\$sysDrive$\Windows\Temp” -EA SilentlyContinue

if(Test-Path -Path “\\$Computer\$sysDrive$\Windows\Temp\$($hotFixArray[2])” -EA SilentlyContinue)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer wusa $($sysDrive):\windows\temp\$($hotFixArray[2]) /quiet /norestart” -PassThru -Wait -WindowStyle Hidden | Out-Null

if(Get-HotFix -ComputerName $Computer | ?{$_.HotFixID -eq “KB3093503”})
{
# Başarılı
Write-Host “Yukleme Basarili” -ForegroundColor Green
$Dst = Get-DST -Computer $Computer
$Dst2 = $Dst

if($Dst[2] -ne “(UTC+02:00) istanbul”)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer tzutil.exe /s $timeZoneTR” -PassThru -Wait -WindowStyle Hidden | Out-Null
$Dst2 = Get-DST -Computer $Computer
}

$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarili”
‘Mevcut Time Zone’ = $Dst[2]
‘Mevcut DST’ = $Dst[0]
‘Mevcut Ay’ = $Dst[1]
‘Yeni Time Zone’ = $Dst2[2]
‘Yeni DST’ = $Dst2[0]
‘Yeni Ay’ = $Dst2[1]
‘Aciklama’ = “Hotfix basarili bir sekilde yuklendi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$sCount++
$itemCount++
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix yuklemesi dogrulanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix dosyasi uzak bilgisayara kopyalanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else # 32-bit
{
Copy-Item -Path “.\$($hotFixArray[3])” -Destination “\\$Computer\$sysDrive$\Windows\Temp” -EA SilentlyContinue

if(Test-Path -Path “\\$Computer\$sysDrive$\Windows\Temp\$($hotFixArray[3])” -EA SilentlyContinue)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer wusa $($sysDrive):\windows\temp\$($hotFixArray[3]) /quiet /norestart” -PassThru -Wait -WindowStyle Hidden | Out-Null

if(Get-HotFix -ComputerName $Computer | ?{$_.HotFixID -eq “KB3093503”})
{
# Başarılı
Write-Host “Yukleme Basarili” -ForegroundColor Green
$Dst = Get-DST -Computer $Computer
$Dst2 = $Dst

if($Dst[2] -ne “(UTC+02:00) istanbul”)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer tzutil.exe /s $timeZoneTR” -PassThru -Wait -WindowStyle Hidden | Out-Null
$Dst2 = Get-DST -Computer $Computer
}

$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarili”
‘Mevcut Time Zone’ = $Dst[2]
‘Mevcut DST’ = $Dst[0]
‘Mevcut Ay’ = $Dst[1]
‘Yeni Time Zone’ = $Dst2[2]
‘Yeni DST’ = $Dst2[0]
‘Yeni Ay’ = $Dst2[1]
‘Aciklama’ = “Hotfix basarili bir sekilde yuklendi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$sCount++
$itemCount++
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix yuklemesi dogrulanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix dosyasi uzak bilgisayara kopyalanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
}
elseif($osInfo.Version -like “6.1*”) # Windows 7 & Windows Server 2008 R2
{
if($osInfo.OSArchitecture -eq “64-bit”) # 64-bit
{
Copy-Item -Path “.\$($hotFixArray[4])” -Destination “\\$Computer\$sysDrive$\Windows\Temp” -EA SilentlyContinue

if(Test-Path -Path “\\$Computer\$sysDrive$\Windows\Temp\$($hotFixArray[4])” -EA SilentlyContinue)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer wusa $($sysDrive):\windows\temp\$($hotFixArray[4]) /quiet /norestart” -PassThru -Wait -WindowStyle Hidden | Out-Null

if(Get-HotFix -ComputerName $Computer | ?{$_.HotFixID -eq “KB3093503”})
{
# Başarılı
Write-Host “Yukleme Basarili” -ForegroundColor Green
$Dst = Get-DST -Computer $Computer
$Dst2 = $Dst

if($Dst[2] -ne “(UTC+02:00) istanbul”)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer tzutil.exe /s $timeZoneTR” -PassThru -Wait -WindowStyle Hidden | Out-Null
$Dst2 = Get-DST -Computer $Computer
}

$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarili”
‘Mevcut Time Zone’ = $Dst[2]
‘Mevcut DST’ = $Dst[0]
‘Mevcut Ay’ = $Dst[1]
‘Yeni Time Zone’ = $Dst2[2]
‘Yeni DST’ = $Dst2[0]
‘Yeni Ay’ = $Dst2[1]
‘Aciklama’ = “Hotfix basarili bir sekilde yuklendi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$sCount++
$itemCount++
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix yuklemesi dogrulanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix dosyasi uzak bilgisayara kopyalanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else # 32-bit
{
Copy-Item -Path “.\$($hotFixArray[5])” -Destination “\\$Computer\$sysDrive$\Windows\Temp” -EA SilentlyContinue

if(Test-Path -Path “\\$Computer\$sysDrive$\Windows\Temp\$($hotFixArray[5])” -EA SilentlyContinue)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer wusa $($sysDrive):\windows\temp\$($hotFixArray[5]) /quiet /norestart” -PassThru -Wait -WindowStyle Hidden | Out-Null

if(Get-HotFix -ComputerName $Computer | ?{$_.HotFixID -eq “KB3093503”})
{
# Başarılı
Write-Host “Yukleme Basarili” -ForegroundColor Green
$Dst = Get-DST -Computer $Computer
$Dst2 = $Dst

if($Dst[2] -ne “(UTC+02:00) istanbul”)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer tzutil.exe /s $timeZoneTR” -PassThru -Wait -WindowStyle Hidden | Out-Null
$Dst2 = Get-DST -Computer $Computer
}

$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarili”
‘Mevcut Time Zone’ = $Dst[2]
‘Mevcut DST’ = $Dst[0]
‘Mevcut Ay’ = $Dst[1]
‘Yeni Time Zone’ = $Dst2[2]
‘Yeni DST’ = $Dst2[0]
‘Yeni Ay’ = $Dst2[1]
‘Aciklama’ = “Hotfix basarili bir sekilde yuklendi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$sCount++
$itemCount++
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix yuklemesi dogrulanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix dosyasi uzak bilgisayara kopyalanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
}
elseif($osInfo.Version -like “6.0*”) # Windows Vista & Windows Server 2008
{
if($osInfo.OSArchitecture -eq “64-bit”) # 64-bit
{
Copy-Item -Path “.\$($hotFixArray[6])” -Destination “\\$Computer\$sysDrive$\Windows\Temp” -EA SilentlyContinue

if(Test-Path -Path “\\$Computer\$sysDrive$\Windows\Temp\$($hotFixArray[6])” -EA SilentlyContinue)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer wusa $($sysDrive):\windows\temp\$($hotFixArray[6]) /quiet /norestart” -PassThru -Wait -WindowStyle Hidden| Out-Null

if(Get-HotFix -ComputerName $Computer | ?{$_.HotFixID -eq “KB3093503”})
{
# Başarılı
Write-Host “Yukleme Basarili” -ForegroundColor Green
$Dst = Get-DST -Computer $Computer
$Dst2 = $Dst

if($Dst[2] -ne “(UTC+02:00) istanbul”)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer tzutil.exe /s $timeZoneTR” -PassThru -Wait -WindowStyle Hidden | Out-Null
$Dst2 = Get-DST -Computer $Computer
}

$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarili”
‘Mevcut Time Zone’ = $Dst[2]
‘Mevcut DST’ = $Dst[0]
‘Mevcut Ay’ = $Dst[1]
‘Yeni Time Zone’ = $Dst2[2]
‘Yeni DST’ = $Dst2[0]
‘Yeni Ay’ = $Dst2[1]
‘Aciklama’ = “Hotfix basarili bir sekilde yuklendi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$sCount++
$itemCount++
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix yuklemesi dogrulanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix dosyasi uzak bilgisayara kopyalanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else # 32-bit
{
Copy-Item -Path “.\$($hotFixArray[7])” -Destination “\\$Computer\$sysDrive$\Windows\Temp” -EA SilentlyContinue

if(Test-Path -Path “\\$Computer\$sysDrive$\Windows\Temp\$($hotFixArray[7])” -EA SilentlyContinue)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer wusa $($sysDrive):\windows\temp\$($hotFixArray[7]) /quiet /norestart” -PassThru -Wait -WindowStyle Hidden | Out-Null

if(Get-HotFix -ComputerName $Computer | ?{$_.HotFixID -eq “KB3093503”})
{
# Başarılı
Write-Host “Yukleme Basarili” -ForegroundColor Green
$Dst = Get-DST -Computer $Computer
$Dst2 = $Dst

if($Dst[2] -ne “(UTC+02:00) istanbul”)
{
Start-Process -FilePath “.\PsExec.exe” -ArgumentList “-accepteula -s \\$Computer tzutil.exe /s $timeZoneTR” -PassThru -Wait -WindowStyle Hidden | Out-Null
$Dst2 = Get-DST -Computer $Computer
}

$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarili”
‘Mevcut Time Zone’ = $Dst[2]
‘Mevcut DST’ = $Dst[0]
‘Mevcut Ay’ = $Dst[1]
‘Yeni Time Zone’ = $Dst2[2]
‘Yeni DST’ = $Dst2[0]
‘Yeni Ay’ = $Dst2[1]
‘Aciklama’ = “Hotfix basarili bir sekilde yuklendi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$sCount++
$itemCount++
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix yuklemesi dogrulanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
else
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Hotfix dosyasi uzak bilgisayara kopyalanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
}
else # Desteklenmeyen işletim sistemi sürümü
{
# Başarısız
Write-Host “Yukleme Basarisiz” -ForegroundColor Red
$charger1 = @{

‘Bilgisayar’ = $Computer
‘Yukleme Sonucu’ = “Basarisiz”
‘Mevcut Time Zone’ = “-”
‘Mevcut DST’ = “-”
‘Mevcut Ay’ = “-”
‘Yeni Time Zone’ = “-”
‘Yeni DST’ = “-”
‘Yeni Ay’ = “-”
‘Aciklama’ = “Yukleme icin desteklenmeyen isletim sistemi.”
}
$customObj1 = New-Object PSObject -Property $charger1
$outputArray1 += $customObj1
$fCount++
$itemCount++
}
}
}
}

$outputArray1 | select ‘Bilgisayar’,’Yukleme Sonucu’,’Mevcut Time Zone’,’Mevcut DST’,’Mevcut Ay’,’Yeni Time Zone’,’Yeni DST’,’Yeni Ay’,’Aciklama’ | Export-Csv operasyon-kaydi.csv -NoTypeInformation -Delimiter “;” -Encoding UTF8
$elapsedTime = (Get-Date) – $startDTM

Write-Host “”
Write-Host “Istatistik:” -ForegroundColor Yellow
Write-Host “”
Write-Host “Toplam Bilgisayar : $($computerList.count)” -ForegroundColor Yellow
Write-Host “Basarili Yukleme : $($sCount)” -ForegroundColor Yellow
Write-Host “Basarisiz Yukleme : $($fCount)” -ForegroundColor Yellow
Write-Host “Operasyon Kaydi (log) : $(Get-Location)\operasyon-kaydi.csv” -ForegroundColor Yellow
Write-Host “Script Calisma Suresi : $($elapsedTime.Hours)h $($elapsedTime.Minutes)m $($elapsedTime.Seconds)s” -ForegroundColor Yellow
Write-Host “”

2) Aşağıdaki araçları C:\Source (veya uygun bir dizin) altında topladığınızdan emin olun.

  • Install-DstHotfix.ps1 (zip ile geliyor)
  • KB3093503 hotfix MSU paketleri. Uygun paketleri KB3093503 üzerinden indirmeniz gerekiyor. Bunları özellikle zip içerisine koymadım çünkü resmi kaynaktan indirmek her zaman en güvenilir yöntemdir.
  • PsExec (zip ile geliyor)
  • bilgisayar-listesi.txt (zip ile geliyor)

bilgisayar-listesi

3) bilgisayar-listesi.txt içerisine uzak bilgisayarları ekleyin.

bilgisayar-listesi

4) PowerShell konsolunu açın ve önce Execution Policy ayarını kontrol edin. Bu iş için Get-ExecutionPolicy yapabilirsiniz. Eğer dönen sonuç Restricted ise, Set-ExecutionPolicy RemoteSigned cmdlet’ini çalıştırarak varsayılan bir güvenlik tedbiri olan sınırlamayı kaldırabilirsiniz. Aksi halde Install-DstHotfix.ps1 çalışmayacaktır.

5) Ortamda yönetici yetkisindeki bir hesap ile oturum açın. Ardından PowerShell konsolunu başlatıp C:\Source dizinine gidin, .\Install-DstHotfix.ps1 ile yükleme işlemini başlatın ve sonra arkanıza yaslanın.

install-dsthotfix-console

Operasyon sonrasında script ile aynı dizinde operasyon-kaydi.csv isimli bir çıktı oluşur. Bunu Excel ile açıp ufak bir biçimlendirmeden sonra tüm sonuçları detaylı olarak görebilirsiniz.

operasyon-kaydi-excel

Başarı kriteriniz Excel tablosundaki Yeni DST sütunu. Hotfix’in yüklendiği ve Time Zone & DST ayarlarının sağlıklı bir şekilde uygulandığı uzak bilgisayarlar için bu sütunda 8.11.2015 04:00:00 zaman bilgisi yer alır.

Get-DstInfo.ps1 Doğrulama Aracı: Install-DstHotfix.ps1’i yaptığı işi veya ortamınızın Yaz Saati Uygulaması bitişine hazır olup olmadığını anlamak ve topluca raporlamak için yeni bir script yayınladım: Get-DsInfo.ps1 ve kullanım klavuzu

Sürüm Geçmişi ve Bilinen Sorunlar

Sürüm Geçmişi:

  • 22.10.2015 13:55 – v01 sürümü yayınlandı.
  • 22.10.2015 15:15 – v02 sürüm yayınlandı.
    • Bugfix – Başarılı yüklemeler için “Yukleme Basarili” olması gereken output ifadesi, yükleme başarılı olduğu halde “Gecmiste Yuklenmis” olarak görünür. Yükleme sürecine etkisi olmayan bu output hatası v02’de düzeltildi.
  • 22.10.2015 16:20 – v03 sürüm yayınlandı.
    • Bugfix – Sarı renkli görüntülenen “Yukleme Basarili” ifadeleri yeşil oldu.
    • Bugfix – Bazı uzak bilgisayarlarda Time Zone ve DST değişimini engelleyen sorun giderildi.
  • 22.10.2015 17:00 – v04 sürümü yayınlandı.
    • Geliştirme – operasyon-kaydi.csv dosyasına yazılan “Açıklama” cümleleri detaylandırıldı.
    • Güncelleme – Console çıktısında hatalı görünen script versiyon bilgisi düzeltildi.
Bilinen Sorunlar:
  • Bazı senaryolarda restart bekleyen uzak bilgisayarlara DST Hotfix yüklemesinin başarısız olabildiği veya yükleme başarılı olduğu halde Time Zone & DST ayarlarının uygulanmadığı raporlandı. Bu konuyu kontrol ediyorum. Geçici çözüm olarak restart sonrası yüklemeyi tekrar çalıştırabilirsiniz.

Windows Server 2003 ve Windows XP

Bu sürümler için özel durumlar var.

Windows Server 2003 ve Windows XP için DST Hotfix yok. Bu yüzden script, bu işletim sistemleri için herhangi bir yükleme yapmıyor. Sanırım bu sürümler için en mantıklı çözüm 25 Ekim öncesi DST ayarını devre dışı bırakmak ve 8 Kasım sabaha karşı veya ertesi gün tekrar aktif etmek. Bu müdahalenin saati hemen o an (yani 25 Ekim’i beklemeden) 1 saat geriye alacağını unutmayın; DST devre dışı kalınca 29 Mart 2015’te 03:00’den 04:00’e atlarken eklenen 1 saatlik ilave hemen sistem saatinden çıkartılır. Ama bu normal saati aslında 8 Kasım’da görmek istiyoruz. Bu yüzden aşağıdaki yöntemlerle DST’yi devre dışı bıraktığınızda, Time Zone’a göre de değişmekle birlikte büyük ihtimalle +1 saat eklemeniz gerekecek. Ama özellikle Active Directory Domain ortamında zaman bilgisini PDC’den alan sistemler için böyle bir oynama yapma şansınız yok çünkü ilk time sync’de eklediğiniz fark kaybolur ve saat bilgisi PDC -1 saat (çünkü DST kapalı) ile eşitlenir. Resmen karmaşa.

windows-server-2003-xp

Müşterilerimizin ortamında az sayıda oldukları ve kritik pozisyonda olmadıkları için bizim Active Directory Domain üyesi Windows Server 2003 ve Windows XP’ler için aldığımız karar şöyle: şu an hiçbir şekilde DST ayarlarına müdahale etmiyoruz, aksine 25 Ekim’e kadar DST’nin aktif kalması gerekiyor. Bu durumdaki bilgisayarlar 25 Ekim’e kadar doğru saat ile çalışabilecekler. 25 Ekim 2015 04:00 geldiğinde ise saatlerini bir saat geri alacaklar ve local time için hem DC’ler hem de diğer hotfix’li bilgisayarlarla aralarında 1 saatlik fark oluşacak. Ama Kerberos authentication mekanizması arka planda UTC olarak operate edildiğinden logon işlemleri bu farktan etkilenmeyecek. Eğer bu konuda içiniz rahat etmezse bir de tedbir amaçlı olarak DC’ler üzerinde maximum tolerance for computer clock synchronization GPO ayarını 5dk’dan mesela 120dk’ya genişletebilirsiniz.

Windows Server 2003 ve Windows XP’ler için DST Aktif Etme

Aşağıda bu işletim sistemleri için mevcut durumu raporlayan ve gerektiğinde DST’yi 25 Ekim olarak devreye alan iki komut yer alıyor. Eğer bu süre zarfında DST’yi devre dışı bıraktıysanız zaten şu an o bilgisayarların 1 saat geri olduğunu göreceksiniz. Bu, 8 Kasım’dan önce istenen bir durum değil. Aşağıdaki yöntemle DST’yi en azından 25 Ekim’e kadar yeniden aktif etmenizi öneririm.

DST aktif bilgisayarlarda DisableAutoDaylightTimeSet isimli bir registry anahtarı vardır ve değeri 1’dir. Windows Server 2003 ve Windows XP’lerde bu anahtarı uzaktan silerek DST’yi aktif etmek için:

REG DELETE \\Bilgisayar_Adi\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v DisableAutoDaylightTimeSet /f

DST aktif bilgisayarlarda DisableAutoDaylightTimeSet isimli bir registry anahtarı vardır ve değeri 1’dir. Windows Server 2003 ve Windows XP’ler üzerinde DST yapılandırmasının durumunu uzaktan kontrol etmek için:

REG QUERY \\Bilgisayar_Adi\HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v DisableAutoDaylightTimeSet

Windows Server 2003 ve Windows XP’ler için DST Erteleme

DST aktif sistemler üzerinde yaptığımız denemelerde bu iş için en sağlıklı yöntemin timezone.exe ile ertelemek olduğunu gördük. Windows Server 2003 support tools ile gelen bu aracı kullanarak Windows XP ve Windows Server 2003‘lerin DST bitiş zamanlarını herhangi bir anda 8 Kasım 2015 04:00‘a erteleyebilirsiniz. Araç uzaktan çalıştırmayı desteklemediği için yine PsExec.exe’den yardım almak gerekiyor. Ama aklınızda bulunsun, bilgisayarların yerel disklerine kopyalayarak direkt local’den uygulamak da mümkün.

Uygulama Adımları Şöyle:

1) timezone.exe aracını bulun ve C:\Source altına kopyalayın. Bir kopyasını şuraya koydum.

Bu yöntemde timezone.exe aracının uzak bilgisayarlar üzerine kopyalanmasına gerek yok çünkü bu işi PsExec.exe otomatik olarak yapacak.

2) PsExec.exe aracını bulun ve C:\Source altına kopyalayın. Nereden bulacağınızı biliyorsunuz.

3) PsExec.exe’ye parametre vererek time zone değişikliğini gerçekleştirin.

Mesela ben aşağıda tek bir uzak bilgisayarı \\faxpc şeklinde gösterdim. Satırdaki 03:0:5:03 04:0:2:11 çiftinin ilki DST başlangıcı 29 Mart 2015 03:00, ikincisi ise DST bitişi 8 Kasım 2015 04:00 anlamına geliyor. O çifti değiştirmeden kullanın.

PsExec.exe \\faxpc -c timezone.exe /s 03:0:5:03 04:0:2:11

timezone-exe

“The command completed successfully” ve “timezone.exe exited on faxpc with error code 0” çıktılarını da gördüyseniz işlem tamamdır. Ardından aşağıdaki gibi Get-DstInfo.ps1‘i kullanarak sonucu uzaktan raporlayabilirsiniz. Dikkat ederseniz KB3093503 yüklü olmadığı halde DST tarihi olması gereken 8 Kasım 2015 04:00’a ertelenmiş durumda.

windows-xp-dst

Yukarıdaki örnek tek bir uzak bilgisayar içindi. Bu komut satırını kopyalayıp uzak bilgisayar ismini değiştirdikten sonra arka arkaya çalıştırabileceğiniz gibi, aşağıdaki şekilde PsExec.exe aracına içerisinde sadece Windows XP ve Windows Server 2003’lerin olduğu bilgisayar-listesi.txt de verebilirsiniz. PsExec.exe bu dosya içerisindeki bilgisayar isimlerini alır ve aynı komutu tek tek hepsi için çalıştırır.

PsExec.exe @bilgisayar-listesi.txt -c timezone.exe /s 03:0:5:03 04:0:2:11

Daha sonra aynı liste ile son durumu topluca kontrol etmek için bir de Get-DstInfo.ps1 -‘i çalıştırabilirsiniz.

ÖNEMLİ: timezone.exe ile 8 Kasım 04:00’a yapılan bu erteleme işlemi takip eden yıllar için de geçerli olur. Bu yüzden 8 Kasım 2015 tarihi sonrasında herhangi bir gün (en geç 2016 yılı DST bitiş zamanına kadar) bu müdahalenin geri alınması gerekir.

Bunu gerçekleştirmek için çalıştırmanız gereken komut ise şu: timezone.exe /s 03:0:5:03 04:0:5:10

Yine PsExec.exe’ye parametre olarak verip çalıştırabilir, ardından Get-DstInfo.ps1 ile durumu kontrol edebilirsiniz. 25 Ekim 04:00 görünmesi gerekiyor.

Diğer taraftan sınırlı desteği hala devam eden Windows XP Embeded için yayınlanmış bir hotfix var. Ancak bu sürümü kullanan endüstriyel ortamların mutlaka bir yama çözümü olacağını düşünerek ben sciprt’e eklemedim. Bir çözümleri vardır değil mi? :)

Windows 10

Windows 10 için olan Hotfix ise Update Catalog’da yayınlandı: Catalog veya KB3105514. Ayrıca diğerlerinden farklı olarak WSUS’a da import edilebiliyor çünkü Update Catalog üzerinde yer alıyor. Bu yüzden yine script’e eklemeye gerek görmedim.

Benden bu kadar. Yolun bundan sonrasına katırlarla devam etmeniz gerekiyor :) Takipte kalın: @serhatakinci

Yazı Etiketleri: , , , , ,

Sayfa Başı ▲

Yorumlar (111)

  1. Muammer

    Şapka çıkartılır.

  2. Vasvi UYSAL

    Serhat hocam ellerine sağlık.

    bir de bu clientlerin veya sunucuların içinde timezone değeri
    yanlış olan varsa onu düzeltseymiş daha bir tadından yenmez olurmuş sanki.

  3. Serhat AKINCI

    Vasvi – Bu bir bug ve v03’te düzeldi. Aynı sunucular için yeniden çalıştırabilirsin. Yeniden fix yüklemez, sadece Time Zone ve DST’yi update eder.

  4. volkan

    Serhat hocam elinize sağlık v03 update için Install-DstHotfix Kit zip dosyasını tekrar indiriyoruz sanırım değil mi?

  5. Altug

    Hocam benzerini c# ile yazdım ve bir şekilde hedef makine restart pending durumdaysa bu patch aktif olamıyor. Kontrolde fayda var.

  6. Serhat AKINCI

    Volkan – Doğru. İndirme kaynağı tek ve içerisinde her zaman son sürüm var. Versiyon bilgisinin eski görünmesi problemi de v04’da düzeldi.

  7. volkan

    tşk ler

  8. Serhat AKINCI

    Altug – Geri bildirim için teşekkürler. Normal şartlarda eğer herhangi bir nedenden ötürü hotfix yüklenemezse son kontrolde bunu anlıyor ve mutlaka raporluyor. Sanırım bu kontrol o gibi durumlarda sistem yöneticisi bilgilendirecektir. Ama yine de bunu bir kontrol edelim.

  9. Seckin

    Merhaba Serhat hocam,
    windows 8.1 enterprise isletim sisteminde denedik ” isletim sistemi bilgisi alinamadigi icin yukleme yapilamiyor” hatasi aliyoruz.

    Bilginize

  10. Serhat AKINCI

    Seckin – Geri bildirim için teşekkürler. v04’ü denedin mi?

  11. Seckin

    Evet, hem v03 hem v04 u denedik.
    Windows 8.1 x32/x64 isletim sistemlerinde basarili olamadi.
    Yapmamiz gereken ekstra bir sey var mi ?

    Tesekkurler.

  12. Sabahattin

    Selamlar,
    Script, sadece timezone düzeltecek şekilde düzenlemek mümkün mü?
    Teşekkürler.

  13. Evren Banger

    Süper olmuş hocam. Eline koluna sağlık…

  14. Ali VURAL

    Serhat bey merhaba,
    Öncelikle bilgiler için teşekkürler. Ben kısaca sorularımı sorup, cevaplarınızı rica edeceğim:
    Teşekkürler

    – networkümüzde ne yazık ki hala Windows XP ve Windows Server 2003 az da olsa bulunmakta.Bunlar için MS desteği olmadığından patch işe yaramaz ve manuel ayarlamamız gerekecek değil mi?
    – VMWare ESX server üzerindeki sanal ortamda DC saati ESX ten almıyor mu?

  15. Serhat AKINCI

    Seckin – O halde bence o PC’ler üzerindeki güvenlik duvarına veya AV gibi bir güvenlik uygulamasına takılıyorsunuz. En basitinden şunu deneyebilirsin: Script’i çalıştırdığın sunucu üzerinde PS konsolda aşağıdaki satırı çalıştır.

    Get-WmiObject -ComputerName Buraya_Uzak_Bilgisayar_Adi -Class Win32_OperatingSystem

    Bunun sonucu olarak işletim sistemi bilgisi görmen gerekiyor. Eğer göremiyorsan en basitinden güvenlik duvarını (veya varsa güvelik uygulamasını) geçici olarak kapatıp tekrar deneyebilirsin.

  16. Serhat AKINCI

    Sabahattin – Mümkün tabii ama bunu en baştan tasarıma dahil etmek gerekiyordu. Hotfix geç gelince ve zaman daralınca script’i hızlıca çıkartabilmek için parametrik tasarıma girmedim. Ama şöyle bir fikir verebilirim: Time Zone’u değiştirmek için uzak bilgisayarda tzutil.exe /s “Turkey Standard Time” çalıştırman yeterli. Bu komut aynı zamanda DST’yi de aktif eder. Mesela PsExec.exe ile veya altyapı uygunsa Invoke-Command cmdlet ile tüm ortama uygulayabilirsin.

  17. Serhat AKINCI

    Ali VURAL – Windows XP ve Windows Server 2003 için birazdan yazının sonuna bir çözüm ekleyeceğim. DC’lerin veya bilgisayarların saat bilgisini nereden aldıklarının DST açısından pek bir önemi yok. Hotfix, işletim sisteminde hard-coded olan 25 Ekim tarihini erteliyor.

  18. Sabahattin

    Serhat Hocam,
    Cevap için teşekkürler. Evet, tzutil istediğimiz çözüm için iyi bir öneri. selamlar.

  19. Günay

    Hocam,

    değerli vaktini harcayıp böyle bir hizmette bulunmak takdir edilmesi gereken bir davranış. öncelikle teşekkürler. işletim sistemi SP leri eksik server/client yükleme başarılı olmuyor. bir de restart bekleyen server/client yükleme olsa da restart olmadan değişikliği kabul etmiyor. bununla ilgili bir önerin olur mu?

  20. Hakan

    Mesaiden sonra v04 ü 100 kadar sistem için çalıştırdık. Arada yapamadıkları oldu ama büyük çoğunluğu çok başarılı ve sorunsuz oldu. elinize sağlık çok teşekkür ederiz.

  21. Serhat AKINCI

    Günay – Öncelikle geri bildirimler için teşekkürler.

    Hangi OS için hangi SP eksik bilemiyorum ama hiç SP eksik bir OS için test etmedim; hotfix tarafından aranan bir gereksinim olabilir mi?

    İkinci konu için bir Windows Server 2012 R2 hazırladım ve bir takım Windows update sonrası restart beklerken Install-DstHotfix.ps1 ile hotfix’i yüklemeyi denedim. Başarılı bir şekilde yüklendi ve ayrıca Time Zone + DST ayarları da uygulandı. Hala restart bekliyor… Senin senaryodaki işletim sistemi sürümü nedir? ve restart beklemesinin nedeni farklı bir update mi? yoksa mesela bir Windows Server role/feature veya program yüklemesi mi ne dersin? Bu arada v04 sürümüyle denedin mi diye hiç sormuyorum.

  22. Yusuf

    Merhaba,

    Serhat Bey çok faydalı oldu, teşekkürler.Testlerimde ben bir sorun ile karşılaşmadım.

    Günay Bey, aşağıdaki updatelerden en az birinin ilgili işletim sistemleri için yüklü olması gerekiyor. İsterseniz bir kontrol edin.
    Windows 2003/2008/2008R2/2012/2012R2/XP/Vista/7/8/8.1 için: KB2523087, KB2935092 veya KB3013410
    Windows 2008/2008R2/2012/2012R2/ Vista/7/8/8.1 için: KB3077715

  23. Ertan

    Merhaba Serhat Bey;
    Adım adım yazdıklarınızı yapmamıza rağmen aşağıdaki hatayı alıyorum.
    Win 2008 ve domain ortamı..

    PS C:\source> . \Install-DstHotfix.ps1
    The term ‘\Install-DstHotfix.ps1’ is not recognized as the name of a cmdlet, function, script file, or operable program
    . Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:1 char:2

    Suggestion [3,General]: The command \Install-DstHotfix.ps1 was not found, but does exist in the current location. Windows PowerShell doesn’t load commands from the current location by default. If you trust this command, instead type “.\\Install-DstHotfix.ps1”. See “get-help about_Command_Precedence” for more details.

  24. Serhat AKINCI

    Ertan – ExecutionPolicy’e takılıyor olmalı. Script’i çalıştırmayı denediğin sunucu üzerinde;

    1) Get-ExecutionPolicy ile önce duruma bak ve bunu not al: Muhtemelen “Restricted” göreceksin (veya farklı bir şey). Bu, PowerShell için varsayılan bir güvenlik önlemidir.
    2) Set-ExecutionPolicy Unrestricted ile sınırlamayı kaldır.
    3) Script’i çalıştır.
    4) İşin bitince en son yeniden Set-ExecutionPolicy Restricted ile eski haline alabilirsin.

  25. Ertan

    Serhat Bey komutlar çalıştı teşekkür ederim. Ancak 200 pc den 20 tanesi başarılı oldu ve 180 adet pc yükleme başarısız hatası verdi. Yusuf beyin bahsettiği updatelerin olması gerekiyormu acaba.

    Updateler
    Windows 2003/2008/2008R2/2012/2012R2/XP/Vista/7/8/8.1 için: KB2523087, KB2935092 veya KB3013410
    Windows 2008/2008R2/2012/2012R2/ Vista/7/8/8.1 için: KB3077715

  26. Cevdet

    serhat hocam selamlar ,

    Bazı pc lerde ; “Hotfix yuklemesi dogrulanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.” ,

    Bazılarında ; “Isletim sistemi bilgisi alinamadigi icin yukleme yapilamadi.”

    uyarısı alıyorum. Neleri kontrol etmeliyim ?

    Teşekkürler…

  27. Kaan Keskin

    Serhab Bey merhaba,

    Domain ortamında dc de yapılan msu güncellemesi win7 pclere time bilgisini zamanı geldiğinde gönderir mi?

  28. Şükrü KÜÇÜK

    Hocam teşekkürler…

  29. Günay BORA

    hocam selam,

    aşağıdaki gibi bir çözüm buldum. Sccm ile dağıtımına başladım. bir batch file reg file ile restart gerekmeden işlem tamamlanıyor. şu ana kadar sorun yaşamadık. artık kalanları da stajyer arkadaşlara escale edeceğiz :)

    .Bat file
    @echo off
    xcopy “\\010.xxx.xxx.xxx\DST\*.*” “c:\dst\*.*”
    regedit.exe /s “c:\DST\istanbul-dst.reg”
    TZUtil /s “Turkey Standard Time”
    TZChange /C “Turkey Standard Time”

    .reg file
    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Turkey Standard Time]
    “MUI_Display”=”@tzres.dll,-1500”
    “TZI”=hex:88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,02,00,04,00,00,\
    00,00,00,00,00,00,00,03,00,00,00,05,00,03,00,00,00,00,00,00,00
    “Std”=”Turkey Standard Time”
    “MUI_Std”=”@tzres.dll,-1502”
    “Dlt”=”Turkey Daylight Time”
    “MUI_Dlt”=”@tzres.dll,-1501”
    “Display”=”(UTC+02:00) Istanbul”

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Turkey Standard Time\Dynamic DST]
    “2010”=hex:88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,04,00,\
    00,00,00,00,00,00,00,00,03,00,00,00,05,00,03,00,00,00,00,00,00,00
    “2011”=hex:88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,04,00,\
    00,00,00,00,00,00,00,00,03,00,01,00,05,00,03,00,00,00,00,00,00,00
    “FirstEntry”=dword:000007da
    “2012”=hex:88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,04,00,\
    00,00,00,00,00,00,00,00,03,00,00,00,05,00,03,00,00,00,00,00,00,00
    “2014”=hex:88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,04,00,\
    00,00,00,00,00,00,00,00,03,00,01,00,05,00,03,00,00,00,00,00,00,00
    “2013”=hex:88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,04,00,\
    00,00,00,00,00,00,00,00,03,00,00,00,05,00,03,00,00,00,00,00,00,00
    “LastEntry”=dword:000007e0
    “2015”=hex:88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0b,00,00,00,02,00,04,00,\
    00,00,00,00,00,00,00,00,03,00,00,00,05,00,03,00,00,00,00,00,00,00
    “2016”=hex:88,ff,ff,ff,00,00,00,00,c4,ff,ff,ff,00,00,0a,00,00,00,05,00,04,00,\
    00,00,00,00,00,00,00,00,03,00,00,00,05,00,03,00,00,00,00,00,00,00

  30. Hakan

    Serhat Hocam
    client tarafında %50 basarılı oldu , digerlerini elle kurduruyorum :)
    tesekkurler

  31. Serhat AKINCI

    Ertan – Yükleme başarısız olan bilgisayarlar için log dosyasında açıklama sütununda ne yazdığı önemli. Genellikle işletim sistemi bilgisinin alınamadığı durumlarda bu sorun yaşanıyor. Bunun nedeni de genellikle uzak bilgisayar üzerindeki güvenlik duvarı veya güvenlik uygulamasının uzaktan erişimi veya komut çalıştırmayı engellemesi oluyor. Kapatıp deneyebilirsin.

  32. Murat

    Vurur yüze ifadesi, süpermen misin bitanesi :)

    Ellerine, emeğine sağlık. Vakit ayırıp bizler ile paylaşımda bulunman müthiş.

  33. Serhat AKINCI

    Kaan Keskin – Bu konu için blog post’a bir ilave yapacağım.

  34. Serhat AKINCI

    Hakan – Genelde güvenlik duvarı veya güvenlik yazılımlarına takılıyor veya uzak bilgisayar komut çalıştırmak için gereksinimleri karşılayamayabiliyor. %50 hiç yoktan iyi diyelim :)

  35. uğur savaş

    komut çalışmadı. aşağıda ki hatayı veriyor. neden olabilir acaba ? teşekkürler.
    PS C:\source> .\Install-DstHotfix.ps1
    File C:\source\Install-DstHotfix.ps1 cannot be l
    se see “get-help about_signing” for more details
    At line:1 char:24
    + .\Install-DstHotfix.ps1 <<<<
    + CategoryInfo : NotSpecified: (:)
    + FullyQualifiedErrorId : RuntimeException

  36. Oguzhan Oktay

    Merhaba,

    Öncelikle çok teşekkürler, oldukça faydalı oldu.
    Ben %60’ı geçtim ama 1400 client olunca yüzdelerin bir önemi kalmıyor,mücadeleye devam…

  37. Ergün YILDIZ

    Teşekkürler
    6 sunucumda update sorunsuz yaptım.

  38. Serhat AKINCI

    Uğur Savaş – ExecutionPolicy’e takılıyor olmalı.

    1) Get-ExecutionPolicy ile önce duruma bak ve bunu not al: Muhtemelen “Restricted” göreceksin (veya farklı bir şey). Bu, PowerShell için varsayılan bir güvenlik önlemidir.
    2) Set-ExecutionPolicy Unrestricted ile sınırlamayı kaldır.
    3) Script’i çalıştır.
    4) İşin bitince en son yeniden Set-ExecutionPolicy Restricted ile eski haline alabilirsin.

  39. Serhat AKINCI

    Oguzhan Oktay – Yüklenemeyen %40’taki problem ne acaba? :)

  40. uğur savaş

    Merhaba Hocam,
    ok. bilgiler için çok teşekkürler. eline sağlık.

  41. Yahya

    800 civarı client+server %95 başarıyla yükledik. Elinize sağlık. Şahane :)

  42. Oguzhan Oktay

    Genelde işletim sistemi bilgisi alınamadı hataları, acaba bu kontrolü baypass edip sadece belirli bir hotfix dosyasını kur deme şansımız varmı?
    Çünkü cihazlarımın hepsinin Win7 x86 olduğunu biliyorum.

  43. Kemalettin

    Merhaba Serhat Hoca,
    aşağıdaki hatayı alıyorum sebebini bulamadım yardımcı olurmusunuz
    File C:\Source\Install-DstHotfix.ps1 cannot be loaded because the execution of scripts is disabled on this system. Plea
    se see “get-help about_signing” for more details.
    At line:1 char:24
    + .\Install-DstHotfix.ps1 <<<<
    + CategoryInfo : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException

  44. İsmail Zafer ÖZTÜRK

    Harika bir çalışma. Emeğinize sağlık hocam.

  45. Yusuf

    Arkadaşlar,

    “Hotfix dosyasi uzak bilgisayara kopyalanamadi. Tekrar deneyin veya bu bilgisayar icin farkli bir yukleme yontemi tercih edin.” > Yüklenmeye çalışılan işletim sistemi muhtemelen 32 bit.

    “Isletim sistemi bilgisi alinamadigi icin yukleme yapilamadi.” > Ya karşı bilgisayar ayakta değil, ya da güvenliğe takılıyor.

  46. uğur savaş

    Tekrar Selam Serhat Hocam.
    tüm dediklerinizi yaptım fakat yükleme başarısız diyor.
    tek bilgisayar için denedim farklı bir kaç bilgisayarı tek tek denedim. hepsinde sonuç aynı.
    komutla bilgisayarın özeliklerini de görebiliyorum. bilgisayarlarda güvenlik duvarı açık değil, virüs prg disable vs.
    yetkili kullanıcı ile komutu çalıştırıyorum yinede yok olmuyor. ne yapa bilirim ?

    teşekkürler.
    kola gelsin.

  47. Serhat AKINCI

    Oguzhan Oktay – Teorik olarak mümkün tabii. Ama bunu şu an uygulamak için tasarımı yeniden gözden geçirmek ve test sürecine girmek lazım. Bunun yerine script içerisindeki ilgili PsExec satırını ve ilgili hotfix dosyasını yeni bir script içerisinde birleştirmeyi deneyebilirsin.

  48. Serhat AKINCI

    Kemalettin – ExecutionPolicy’e takılıyor olmalı.

    1) Get-ExecutionPolicy ile önce duruma bak ve bunu not al: Muhtemelen “Restricted” göreceksin (veya farklı bir şey). Bu, PowerShell için varsayılan bir güvenlik önlemidir.
    2) Set-ExecutionPolicy Unrestricted ile sınırlamayı kaldır.
    3) Script’i çalıştır.
    4) İşin bitince en son yeniden Set-ExecutionPolicy Restricted ile eski haline alabilirsin.

  49. EROL DURSUN

    Serhat Bey ;
    Elinize sağlık.
    RDHS kullandığım için sadece Server Sistemlere geçtim Clinet ler ile ilgilenmedim. RDHS in bir güzelliğini daha gördüm.

  50. Fatih YEGİN

    Elinize, emeğinize sağlık hocam.

  51. Sinan Karababa

    Elinize Sağlık Serhat Hocam

  52. Erkan

    Bizde büyük oranda başarıyla çalıştırdık. Desteğiniz ve kısa sürede hayata geçirdiğiniz araç için çok teşekkürler. Elinize sağlık.

  53. Akhan

    Serhat Bey teşekkürler. Elinze sağlık, pek güzel olmuş.

    Power Shell “Execution of script is disabled” şeklinde bir hata verdi.
    Script çalıştırmadan önce;
    “set-executionpolicy remotesigned” komutunu çalıştırmak gerekti bende.
    Daha sonra sorunsuzca çalışmaya başladı.

  54. Serhat AKINCI

    Get-DstInfo.ps1 isimli yeni bir script yayınladım: http://www.serhatakinci.com/index.php/get-dstinfo-windows-yaz-saati-uygulamasi-icin-kontrol-araci.html

    Get-DstInfo.ps1 sadece raporlama yapıyor. Bu script ile ortamdaki Windows 10, Windows XP ve Windows Server 2003’ler de dahil olmak üzere tüm Windows işletim sistemleri için Local Time, Time Zone, DST Date ve KB3093503 durumunu uzaktan raporlayabilirsiniz.

  55. ceyhun özkan

    hocam, ellerine sağlık yarısını script ile yapmayı başardık. teşekkür ederiz.

  56. Salih

    Merhaba,

    Ortam dışında olan ve hotfixi almamış windows 7 ve ya windows 8.1 kullanıcılarının pazartesi ofise gelmesi durumunda saatleri farklı olacağı için etki alanına hiç girememesi gibi bir sorun yaşanır mı ?

  57. Serhat AKINCI

    Salih – O bir şehir efsanesi :) çünkü Active Directory’nin varsayılan authentication protocol’ü Kerberos için sunucu (DC) ve istemci arasındaki zaman ilişkisi UTC olarak operate edilir. Eğer UTC olarak tutulan zaman bilgisi arasındaki fark varsayılan olarak 5dk’dan fazla olursa evet authantication gerçekleşmez. Ama bu hotfix ve DST gibi şeyler Local Time (yani ön yüzde görünen ülke saati diyelim) için geçerli.

  58. Salih

    Serhat hocam,

    teşekkürler :). Peki bu kullanıcılar login olduktan sonra normal çalışmalarına devam ederken etki alanı ortamında oldukları için saatleri normale gelecek. Bu durumda da hotfixi yüklemeye devam edelim mi ?

  59. Serhat AKINCI

    Salih – Bu da bir başka şehir efsanesi :) Bu konu yukarıda sorulduğunda (Kaan Keskin) post’a bir ilave yapacağım demiştim ama fırsat olmadı. Bu vesileyle her iki soruyu da yanıtlamış olayım.

    Hotfix geçilmemiş ve DST bitiş zamanı 25 Ekim 2015 04:00 görünen Active Directory Domain üyesi Windows’lar saat bilgisini zaten DC’den aldıkları için Pazar sabahı geri kalmayacaklarını düşünenler varsa üzgünüm ama yanılıyorlar :) çünkü mesele Local Time ile ilgili.

    Client’ların PDC gibi NTP tabanlı servislerden aldıkları zaman bilgisi UTC’dir. Client OS, NTP’den aldığı bu zaman bilgisi üzerine Time Zone ayarlarına bakarak meridyen (Türkiye için +2 saat) ve gerekli ise DST (+1 saat) ilave yapar. İşte bu kombinasyonla ortaya çıkan zamana Local Time denir. Bu davranış gereği DC’nin saati ne olursa olsun, DST bitiş zamanı geldiğinde Client OS sene başında verdiği 1 saati geri alır ve DC bu konuda baskın olamaz; çünkü Local Time’ı yöneten taraf DC değil Client OS’tir. Ayrıca bu durum DC/Client authentication’larını etkilemez ve Client’lar 1 saat geri kalsa dahi normal şekilde logon olabilir çünkü Kerberos auth için dikkate alınan zaman bilgisi Local Time değil System Time‘dır ve o da UTC‘dir; yani ekleme çıkartma yapılmamış salt zaman bilgisi…

    Aslında bunu test etmenin yolu çok basit: Şu an bir client üzerinde DST’yi disable et, saatin anında 1 saat geri alındığını göreceksin. Ardından bir süre o şekilde bekle, logoff/logon dene, hatta w32tm /resync falan yap, ama DC ile aradaki 1 saat farkın kapanmadığını göreceksin, ta ki DST’yi yeniden aktif edene kadar. Gerçi test etmeye de gerek yok, birkaç saat sonra gerçek geçiş anı yaşanacak :)

  60. Serhat AKINCI

    Bu arada Windows XP ve Windows Server 2003’ler için support tools içerisinde gelen timezone.exe ile sağlanan bir çözüm ekledim. Sanırım en güvenilir yöntem bu.

  61. Mert

    Abi şu yazıyı 3 gündür takip ediyorum resmen insan üstü efor sarfettin. Bilgin tecrüben yeteneğin bir tarafa bunlar zaten tartışılmaz. Ben asıl ilgin alakan için çok teşekkür ederim. Resmen ülkenin patchleme işini üstlendin :) Verdiğin bilgilerse ayrı ayrı değerli. Bizde şirkette 1500 civarı bilgisayara yükleme yaptık. Çok başarılı oldu. Bütün ekip arkadaşlarım adına tekrar teşekkrüler.

  62. Erhan OKTAY

    Elinize sağlık Serhat bey.

  63. Akhan

    Serhat Hocam, bu timezone.exe ile bir win2003 ve bir xp sunucuya uyguladım. Her ikisinide set etti. Bilgilendirme için teşekkür ederim.
    Windows 7 makinelerde de, Timezone ile değişiklik yapabilir miyiz? Tabi 8 Kasım dan sonra tekrar eski haline getirmek şartı ile.

  64. Gokhan

    Elinize saglik Serhat hocam. Sayenizde sorunsuz atlattik.

  65. Serhat AKINCI

    Akhan – Deneyebilirsin ama Windows XP ve Windows Server 2003 üzeri OS’lerde çalışmayacaktır. Onlar için KB3093503 numaralı hotfix’i yüklemek en doğru seçenek.

  66. Serhat AKINCI

    25 Ekim sabahı ve sonrasında 1 saat geri kalmış Windows’lar için yapılması gerekenleri şu yazıda toparladım.

  67. Serhat AKINCI

    Mert – Yüklemelerin sorunsuz olmasına çok sevindim :) Ayrıca burayı takip eden, geri bildirimde bulunan ve konunun gelişmesine katkı sağlayan herkese ben teşekkür ederim.

  68. Tayfun

    Serhat Bey Merhaba,

    DC Server Windows server standard. Sizin makalenizden güncellemeleri yaptım, ancak bu servera kurulum yapamadım. Ve bu yüzden dünden beri sıkıntı yaşanmakta. Şuan DC server eski saatten ilerliyor. Değişmiyor. Ne yapmamız gerekiyor?

  69. cahit

    Harikasınız teşekkürler.. Ayrıca windowsta hotfix var..https://support.microsoft.com/en-us/kb/3093503 platforma göre mailinize atıyorlar..

  70. cahit

    bu hotfixin çalışması için mutlaka saat diliminiz UCT:02:00 istanbul olmalı..

  71. Şahin Dağ

    Merhaba,

    geç kalmış olmakla birlikte 23/10 cuma günü sitenizdeki bilgileri bulup akabinde çalışmaya başladık. adı geçen KB3093503 yamasını paket dağıtmak için kullandığımız tüm client bilgisayarlarımıza ulaştırdık, sunucularımızın tümünde de manuel olarak işlemleri tamamladık ancak saate tıkladığımızda daylight saving time ended 25 ekim .. bilgilerini görmeye başlamıştık.

    Malaesef akşam geçiş oldu ve 2 sunucumuz hariç tüm sunucu ve client bilgisayarlarımızda saatte bir saat sorun var. Başta belirttiğim üzere tüm client ve server bilgisayarlarımızda yama geçili, na yapabilirim?

  72. Şahin Dağ

    “cahit
    25.10.2015 – 13:41
    bu hotfixin çalışması için mutlaka saat diliminiz UCT:02:00 istanbul olmalı..”

    süpersiniz daha ne deyim. Şu an Empirum üzerinden time zone bilgilerini uct+2 istanbul olarak düzenleme paketini hazırlıyorum sanıyorum ilaç olacak. Bu vesileyle emeği geçen herkese teşekkürler.

  73. Serhat AKINCI

    Arkadaşlar – Hotfix dağıtımını Install-DstHotfix.ps1 ile yaparsanız, aynı zamanda Time Zone ayarları da kontrol edilir ve gerekli ise (UTC+02:00) Istanbul zone’u otomatik olarak seçilir. Eğer Hotfix’i önceden manuel olarak dağıttıysanız Install-DstHotfix.ps1‘i üzerine çalıştırabilirsiniz, yeniden Hotfix yüklenmez ve bu sefer sadece Time Zone ayarları kontrol edilir ve eksi bilgisayarlarda (UTC+02:00) Istanbul seçilir. Özetle Install-DstHotfix.ps1 aracı sadece hotfix yüklemiyor, aynı zamanda Time Zone seçimini de otomatik olarak gerçekleştiriyor.

  74. Serhat AKINCI

    Tayfun – Eski saat şu an olması gereken saat. 8 Kasım’da 1 saat geri alınacak.

  75. ahmet serkan arasan

    Merhabalar; emeğize sağlık.
    Bu tür emek gerektiren çözümleri türkçe sitelerde bulmak pek mümkün olmuyor. Detaylı anlatımınız, kolay uygulanabilmesi ve version güncellemeleri ile muazzam olmuş.
    600 sunucu, 900 istemci gibi bir ortamda elbette ufak hatalar alarak, manuel müdahale ederek uyguladım.
    Taşın altına elinizi soktuğunuz için teşekkürler…

  76. Serhat AKINCI

    Bu yazıya yapılan bazı yorumlar filtreye takılmış ve “spam” havuzuna düşmüş. Birkaç tanesini fark edip yayınladım ama yaklaşık 5.000 spam mesaj arasında kaynayanlar da olmuştur. Yorumu yapıp yayınlanmayan varsa lütfen kusura bakmasın.

  77. bilal

    Hotfix sayfasında tüm platformlar dediğim zaman xp için de bir hotfix görüyorum, bu hotfix ile XP sorununu çözemiyor muyuz?

  78. Serhat AKINCI

    bilal – O paket sadece Windows XP Embeded edition için.

  79. Şahin Dağ

    Merhaba,

    farklı bir sorunsalım olsa;
    Şu an tüm sistemlerde herşey yolunda ve saatler doğru ancak: outlook calendar üzerindeki önceden yapılmış tüm toplantı çağrıları bir saat farklı görünüyor. outlook calendar , time zone içerisinde utc+2 atina olarak geğiştirdiğimizde calendar kendine geliyor ancak sistem saati bir saat oynuyor.

    Yabancı merkezli bir şirketiz Exchange bilgileri yukarıdan alıyor ne tavsiye edersiniz?

  80. Salih

    Serhat hocam selamlar, elinize emeğinize sağlık.
    Tüm adımları izledim ancak yükleme aşamasında aşağıdaki hatayı alıyorum.

    PS C:\Source> .\Install-DstHotfix.ps1
    .\Install-DstHotfix.ps1 : File C:\Source\Install-DstHotfix.ps1 cannot be loaded. The file C:\Source\Install-DstHotfix.p
    s1 is not digitally signed. You cannot run this script on the current system. For more information about running script
    s and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
    At line:1 char:1
    + .\Install-DstHotfix.ps1
    + ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

  81. Mehmet ŞAHİN

    Serhat hocam eline, emeğine, zamanına teşekkürler.

  82. Kemal

    Eline sağlık üstad.

  83. Salih

    Valla helal olsun Serhat bey, microsoft türkiye size şuku vermeli bence..

  84. HÜSEYİN SORKUN

    Serhat Bey Çok teşekkürler çok yararlı bir makale oldu client denememde işe yaradı şimdi 300 cliente uygulama yapacağım.

  85. ilker

    Serhat Hocam,

    Kıymetli paylaşımınız için teşekkür ederiz…

  86. Yusuf

    Serhat Hocam Selam,

    Bizde yapımıza uyguladık ve sorunsuz atlattık, sayenizde kabus bir pazartesiden kurtulduk. Bu arada küçük bir bilgiyi iletmek istiyorum. 25 Ekim’ den önce kapalı oldukları için hotfixi yükleyemediğimiz makinelere bu sabah (26 Ekim) yükelmeyi gerçekleştirdik. Geç yükleme yapsak bile makineler saatlerini otomatik olması gerekene ayarladı, ekstra bir ayara gerek kalmadı.

    Tekrar teşekkürler…

  87. Seyfi

    bu kadar uğraşmak yerine 8 Kasım’a kadar utc+3 zaman dilimine geçsek, sonra tekrar utc+2 yapsak?

  88. Kerem TAŞLIEL

    Şahin Dağ beyin sorusuna bir cevap gelmiş mi göremedim ama 2 hafta boyunca tüm toplantılar ve takvim aktiviteleri +1 saat ileri gözüküyor. Çözümü olan var mıdır :?

  89. y@kup

    eline sağlık arkadaşım.. tşk için anca vakit buldum.. baya işimize yaradı açıkçası hiç zorlanmadan yaptık geçtik.. tekrardan tşk

  90. Serhat AKINCI

    Şahin Dağ, Kerem TAŞLIEL – Normal şartlarda Exchange Server’ın Time Zone’u ile Client OS’in Time Zone’u (ve her iki tarafın da DST bitiş tarihi erteleme zamanları) aynı olduğu sürece böyle bir fark olmamalı diye düşünüyorum. Hatta ben birkaç ortamda kontrol ettiğimde daha önce oluşturulmuş takvim öğelerinde böyle bir sorun göremedim. Ama mesela Client’ın saatini 1 saat ileri aldığımda (veya Time Zone’u değiştirdiğimde) fark oluşur, ancak bu gayet normal. Acaba sizlerin ortamında server ve client arasında böyle bir fark olabilir mi?

  91. Serhat AKINCI

    Şahin Dağ, Kerem TAŞLIEL – Düşününce aklıma gelen bir diğer ihtimal şu: Client’lar takvim öğelerini oluşturduğu veya kabul ettiği sırada farklı bir Time Zone içerisindeydi (muhtemelen (UTC+02:00) Athens, Bucharest) ve şimdi fix sonrasında Time Zone’ları (UTC+02:00) Istanbul oldu ve DST 8 Kasım. 25 Ekim’de (UTC+02:00) Athens, Bucharest Time Zone’undan -1 saat yapıldığı için böyle bir fark oluşuyor olabilir. Client’ların bu öğeleri yeniden düzenlemesi veya her ne kadar şu an kullanılmıyor olsa da Client’lar üzerinde o dönemki Time Zone’un da DST’sini 8 Kasım’a ertelemek gibi bir şeyler yapılabilir.

  92. Şahin Dağ

    Merhaba,

    Almany aile yazıştık baya bir herkes TR’nin yaptığı bu abuklukla şaşırmış durumda ancak onların dediği sistemler bizim buradaki sunuculardan bilgileri alıyorlar ve bizler buradaki sunuculara Microsoft’un adı geçen yamasını geçemeyiz. dolayısıyla böyle bir farklı görünme yaşayacaksınız taa ki gerçekten gmt+2’ye geçinceye kadar.
    Bizlerde sorunumuzu outlook üzerinden ikinci zaman dilimi ekleyip orada gmt+2 atine seçip başlık olarak GEÇİCİ yazdırmak yolunda bulduk. Kullanıcılar 8 Kasım’a kadar calender’a girip solda yer alan geçici başlıklı kısma bakıp ona göre hareket edecekler.

  93. Serhat AKINCI

    Şahin Dağ – Önümüzdeki 2 hafta zorlu geçecek :)

  94. Salih

    Serhat Bey, benim aşağıdaki sorunum neden olabilir acaba.

    Serhat hocam selamlar, elinize emeğinize sağlık.
    Tüm adımları izledim ancak yükleme aşamasında aşağıdaki hatayı alıyorum.

    PS C:\Source> .\Install-DstHotfix.ps1
    .\Install-DstHotfix.ps1 : File C:\Source\Install-DstHotfix.ps1 cannot be loaded. The file C:\Source\Install-DstHotfix.p
    s1 is not digitally signed. You cannot run this script on the current system. For more information about running script
    s and setting execution policy, see about_Execution_Policies at http://go.microsoft.com/fwlink/?LinkID=135170.
    At line:1 char:1
    + .\Install-DstHotfix.ps1
    + ~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : SecurityError: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

  95. Serhat AKINCI

    Salih – ExecutionPolicy’e takılıyor olmalı.

    1) Get-ExecutionPolicy ile önce duruma bak ve bunu not al: Muhtemelen “Restricted” göreceksin (veya farklı bir şey). Bu, PowerShell için varsayılan bir güvenlik önlemidir.
    2) Set-ExecutionPolicy Unrestricted ile sınırlamayı kaldır.
    3) Script’i çalıştır.
    4) İşin bitince en son yeniden Set-ExecutionPolicy Restricted ile eski haline alabilirsin.

  96. Adem BEKMEZ

    merhaba Serhat hocam

    windows sbs 2011 standart hotfix dogrulanmadı hatası alıyorum sbs ürünü için internet te hotfix bulamadım ?

  97. Serhat AKINCI

    Adem BEKMEZ – SBS 2011 için herhangi bir fix yayınlanmadı. DST bitişini ileri ertelemek için mecburen registry müdahalesi gerekecek.

  98. volkann

    selam serhat hocam
    kullanılan bilgisayarlar win7 sıkıntı yok yalnız server 2003 çe çalışan bir program var ve clientlar bundan bilgi çekemiyor ne yazıkkı bunla ilgili ne yapılabilir yada tekrardan yapılan işlemleri nasıl geri alabiliriz.
    saygılar

  99. Erkan Ertürk

    Teşekkürler Serhat bey. Çok faydalı bir çalışma olmuş,kullandık ve işimizi ziyadesiyle gördü.

  100. Apeks Gokhan

    Serhat Hocam Merhaba. Çok faydalı bir çalışma Ellerinize Sağlık.
    Ben bunu çalıştırdım. bir uygulamanın windows servisi bir türlü başlamadı. komutu geri almak istiyorum.
    Aşağıdaki notu ( Önemli ) dikkate alarak yazıyorum.
    işlemi geri almak için 03: ile 04: parametresinin yerini değiştirmek gerekmez mi ?

    ********************************************************************
    ÖNEMLİ: timezone.exe ile 8 Kasım 04:00’a yapılan bu erteleme işlemi takip eden yıllar için de geçerli olur. Bu yüzden 8 Kasım 2015 tarihi sonrasında herhangi bir gün (en geç 2016 yılı DST bitiş zamanına kadar) bu müdahalenin geri alınması gerekir.
    Bunu gerçekleştirmek için çalıştırmanız gereken komut ise şu: timezone.exe /s 03:0:5:03 04:0:5:10
    ********************************************************************

  101. Serhat AKINCI

    Apeks Gokhan – Hayır. İlk pattern DST başlangıç tarihini, ikinci pattern ise DST bitiş tarihini temsil eder. Değişikliği geri almak (yani DST bitiş tarihini yeniden 25 Ekim’e çekmek) istiyorsan tam olarak verdiğim gibi çalıştırmalısın.

  102. Rasim AKIN

    Serhat Bey, XP’ler için, 8 Kasım sonrası geri almak için, komut: timezone.exe /s 03:0:5:03 04:0:5:10 uygulayacağım. gayet açık.
    Peki Windows7’ler için Hotfix yükledim. 8 Kasım sonrası ne yapmak gerekiyor?

  103. Serhat AKINCI

    Rasim AKIN – Hotfix yüklenen (ve Time Zone olarak Istanbul seçili olan) sistemler için 8 Kasım sonrası herhangi bir müdahaleye gerek yok. Hotfix her şeyi hallediyor.

  104. Mahmut Can

    Serhat Hocam öncelikle eline sağlık.
    Benim firmamda halen yaklaşık 700 adet XP SP3 pc var ve timezone.exe ile hayat kurtardın.
    Benim sorum xp ler 08.11.2015 te otomatik olarak geri alacak mı saatleri. Nasıl test edebilirim??
    Büyük kısmı domain ortamında, diğer kısmı ise workgroup.

  105. Serhat AKINCI

    Mahmut Can – timezone.exe ile birlikte verdiğim parametrelerin doğru şekilde uygulandığı tüm Windows XP’ler ve Windows Server 2003’ler 8 Kasım 04:00’da 1 saat geri alacaklar. Test etmek için bazı bilgisayarın tarihini geçici olarak ileri alabilirsin. Mesela 8 Kasım 2015 03:59:55’e al ve davranışı gözlemle…

  106. Mahmut Can

    Workgroup da ki XP lerde 04:00 de 03:00 e geri geldi. Ancak domain üyesi XP lerde saat 04:00 oldu ve devam etti geri gelmedi. Emin olmak için timezone.exe yi tekrar çalıştırdım ve başarılı bilgisini verdi. Sizce sorun ne olabilir? Ya da neyi kaçırıyor olabilirim?

  107. Serhat AKINCI

    Mahmut Can – AD Domain üyesi Windows’lar varsayılan olarak DC’ler ile zaman eşitlemesi yaptığı için belirli aralıklarda tarih/saat bilgisini update ederler, bu yüzden de elle yaptığın ileri alma işlemi ezilir. Ama zamanı geldiğinde DC’ler de Local Time bilgisini 1 saat geri alacağı için sorun olmayacak.

    Get-DstInfo.ps1 ile domain üyesi makineleri raporla. Oluşan CVS dosyasındaki “DST” sütununda 8 Kasım 2015 04:00:00 gördüğünün tüm makinelerin zamanı geldiğinde saatlerini geri alacağından emin olabilirsin.

  108. Mahmut Can

    Serhat Hocam merhaba, XP makinelerin olduğu domainde kontrol için Get-DstInfo.ps1 i çalıştırdığımda aşağıda ki hatayı alıyorum. Sizce neden olabilir? Şimdiden teşekkürler.

    1 bilgisayar icin Local Time, Time Zone, DST ve KB3093503 bilgileri aliniyor…
    Get-WmiObject : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
    At C:\Source\Get-DstInfo.ps1:108 char:22
    + if($osInfo = gwmi <<<< -ComputerName $Computer -Class Win32_OperatingSystem -EA SilentlyContinue -ErrorVariable
    $gwmiERR)
    + CategoryInfo : NotSpecified: (:) [Get-WmiObject], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

  109. Serhat AKINCI

    Mahmut Can – Get-WmiObject : Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) Yetki hatası. Script’i çalıştırdığın oturumun uzak bilgisayarlarda yerel yönetici yetkisinde olması gerekiyor.

  110. Mahmut Can

    Domain Admin hakkına sahip bir kullanıcı oturumu üzerinden çalıştırıyorum. Aynı kullanıcı ile c$ üzerinden ilgili XP makinelere erişip WR işlemleri yapabiliyorum. Sorun WMI ile ilgili olabilir mi hocam?

  111. Serhat AKINCI

    Mahmut Can – Olabilir. Mesela Get-WmiObject -ComputerName UzakPC -Class Win32_OperatingSystem gibi bir sorguya uzaktan yanıt alabiliyor olman lazım.

Yorum Ekle