Blog

  • Veeam Agent E-Posta Bildirimi Nasıl Yapılır?

    Veeam Agent E-Posta Bildirimi Nasıl Yapılır?

    Bildiğiniz gibi Veeam, veri koruma ve yedekleme alanında yaygın kullanılan bir çözümdür. Yedeklemelerin başarılı ya da başarısız tamamlanmasıyla ilgili bildirimlerin doğru kişilere ulaşması; hataların hızlı fark edilmesi ve müdahale edilmesi açısından kritiktir. Bu yazıda Veeam Agent for Windows kullanarak bildirimlerin nasıl birden fazla e-posta adresine gönderileceğini adım adım anlatacağım.

    Veeam Agent config dosyası dışa aktarma ekranı

    Neden E-Posta Bildirimi Önemlidir?

    • Yedekleme görevlerindeki başarısızlıklar zamanında fark edilmezse veri kaybı riski artar.
    • Varsayılan Veeam Agent yapılandırmasında yalnızca tek bir e-posta adresi bildirim alır; ekip iletişimi aksayabilir.
    • Dağıtım listesine birden fazla alıcı ekleyerek sorumluluk paylaşımı sağlanır ve müdahale süresi kısalır.

    Adım Adım: Veeam Agent E-Posta Bildirimi

    1. Config Dosyasını Dışa Aktarma

    Mevcut konfigürasyon ayarlarını export ederek işe başlayın. Export işlemi başarılı olursa komutun çıktısında ExitCode: 0 görünecektir.

    Not: Config dosyası genellikle gizli bir dizinde yer alır — “Gizli öğeleri göster” seçeneğini açmayı unutmayın.

    Veeam Agent config dosyası dizini

    2. Config Dosyasını Düzenleme

    Export ettiğiniz konfigürasyon dosyasını Notepad veya Notepad++ ile açın ve aşağıdaki alanları düzenleyin. Birden fazla alıcı eklemek için e-posta adreslerini noktalı virgül (;) ile ayırın.

    From="[email protected]"
    To="[email protected];[email protected];[email protected]"
    Username="dG9sZ2FjZXloYW4=" 
    Password="c2lmeXNpZnJlQHRlc3Q="

    Açıklama:

    • From — Gönderen e-posta adresi.
    • To — Bildirimlerin gönderileceği e-posta adresleri (noktalı virgülle ayrılmış).
    • Username, Password — Base64 olarak kodlanmış kullanıcı adı ve parola (zorunlu).

    Veeam Agent config içeriği örneği

    3. Base64 Kodlama Örneği

    Kullanıcı adı ve parolayı Base64 formatına çevirmek için PowerShell kullanılabilir:

    # PowerShell örneği
    [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("parolaniz"))
    

    Çıktıyı kopyalayıp Username veya Password alanına yapıştırın.

    4. Config Dosyasını İçeri Aktarma (Import)

    Düzenlemeyi kaydettikten sonra config dosyasını Veeam Agent üzerine import edin. Başarılıysa yine ExitCode: 0 görürsünüz.

    Veeam Agent config import ekranı

    5. Test E-Postası Gönderme

    Arayüzde bulunan “Test Message” butonunu kullanarak test e-postası gönderin. Dağıtım listenizdeki tüm adreslere bildirimin ulaştığını doğrulayın.

    Veeam Agent arayüzü ve test message

    Güvenlik Notları

    • Config dosyasında kimlik bilgileri yer aldığı için dosya izinlerini sıkı tutun; yalnızca yetkili yöneticiler erişebilsin.
    • Şifreleri periyodik olarak değiştirin.
    • Mümkünse uygulama bazlı parola (App Password) veya SMTP Relay ile daha güvenli kimlik doğrulama kullanın.

    Alternatif ve Gelişmiş Seçenekler

    Birden fazla ajanı merkezi bir noktadan yönetmek, daha gelişmiş raporlama ve bildirimler almak isterseniz Veeam Backup & Replication ürününü değerlendirebilirsiniz. Bu çözüm Agent yönetimini ve merkezi raporlamayı kolaylaştırır.

    Bu adımları uygulayarak Veeam Agent for Windows üzerinde yedekleme bildirimlerini birden fazla e-posta adresine gönderebilirsiniz. Böylece yedekleme hataları veya uyarılar ilgili ekip tarafından hızlıca fark edilir ve müdahale süresi kısalır.

    Kaynak

    Daha fazla teknik detay için Veeam’in resmi dokümantasyon sayfasını ziyaret edin: VEEAM KB2704

    Sık Sorulan Sorular (Kısa)

    To alanına kaç e-posta ekleyebilirim?

    • Genelde sınırlama SMTP sağlayıcınızın limitleriyle ilgilidir. Çok büyük listeler için dağıtım listesi (mailing list) veya SMTP relay kullanmak daha sağlamdır.
    • Base64 şifre güvenli midir?
    • Base64 yalnızca enkode etme yöntemidir, şifreyi gizler ama kriptografik olarak güvenli yapmaz. Bu yüzden dosya izinlerine dikkat etmek gerekir.
  • Domain Controller da Zaman Ayarlarını Yapılandırmak

    Domain Controller da Zaman Ayarlarını Yapılandırmak

    Öncelikle Domain Controller ve domain ortamınızda bulunan tüm client makinelerinizin doğru zaman ayarlarını almış olması gerekmektedir.

    Peki bu zaman ayarları doğru olmazsa neler yaşarız;

    Kerberos, Hyper-V ve Cluster gibi AD’nin önemsenmesi gereken önemli hizmetleri kimlik doğrulama ile çalışır. Ve bunlar çok krtik hizmetlerdir. Sisteminizde durmalar yaşayabilirsiniz.

    Bu yazımızda Domain Controller da Zaman ayarlarını yapılandırma için saat senkronizasyonunu nasıl sağlarız onu anlataccağım.

    Bu saat senkronizasyonunu sağlamak için AD de Windows Time Services vardır. W32Time ile sisteminizdeki bilgisayarlar varsayılan olarak yine ortamda bulunan herhangi bir DC den saat bilgisini alırlar. DC cihazlar ise NTDS ile saat bilgisini PDC üzerinden alırlar. PDC makinede dış kaynaklı senkronizasyon için NTP sunucular tanımlanır.

    Aşağıdaki görselde bu yapıyı fazla detaya inmeden özet olarak görebiliyorsunuz.

    Domain Controller

    Hyper-V ve Hyper-V Cluster ortamlarında koşan sanal makineler için “Time synchronization” seçeneği seçili ise bu makineler saat bilgisini Host sunucudan alırlar. Bu durumda Host sunucuda DC saat senkronizasyonunun tanımlanmış olması yeterlidir. (Default olarak DC makinelerden alınır)

    Domain Controller

    Öncelikle ortamda bulunan PDC makinemizi belirleyerek üzerinde harici NTP sunucu ayarlarını tanımlayalım.

    Aşağıdaki komut ile PDC makinemizi bulalım

    netdom query fsmo
    Domain Controller

    PDC makinemize logon olup aşağıdaki komut satırını çalıştırıyoruz.

    w32tm.exe /config /manualpeerlist:"0.pool.ntp.org,0x8 1.pool.ntp.org,0x8 2.pool.ntp.org,0x8" /syncfromflags:manual /update

    Tanımlama sonrası time servisini yeniden başlatmamız gerekiyor.

    net stop w32time && net start w32time

    PDC makinemizde harici kaynaklı NTP sunucularını tanımlamış olduk. Şimdi ortamda bulunan ve PDC olmayan diğer DC makinelerin saat bilgisini PDC üzerinden almasını sağlamalıyız.

    Diğer DC makinelere logon olduktan sonra aşağıdaki komut satırını çalıştıralım.

    w32tm /config /syncfromflags:domhier /update

    Tanımlama sonrası yine time servisini yeniden başlatıyoruz.

    net stop w32time && net start w32time

    Domain Controller cihazlarımızda saat senkronizasyonunu ayarlamış olduk. Diğer Host ve Client makineler default olarak dahil oldukları domain ortamındaki DC makinelerden saat bilgisini alırlar.

    Host makinelerde saat bilgisinin alınacağı DC makineyi manuel tanımlamak için aşağıdaki komut satırını kullanabiliriz.

    w32tm /config /manualpeerlist:[server],0x8 /syncfromflags:MANUAL /update

    [sunucu] yerine NTP sunucusunun IP adresi veya DNS ana bilgisayar adı girilmelidir ve 0x8 yukarıda açıklandığı gibi bir virgülden sonra eklenir.

    Birden fazla sunucu yapılandırılacak ise virgül ve boşlukla ayrılması gerekir, bu nedenle tüm parametreler çift tırnak içine alınmalıdır.

    w32tm /config /manualpeerlist:"[server1],0x8 [server2],0x8" /syncfromflags:MANUAL /update

    Host makinelerimizde saat senkronizasyon bilgisini tanımladık. VM makineler de host makineler üzerinden saat bilgisini alacak.

    Geriye kalan client makinelerde default olarak ortamdaki DC makineler üzerinden saat bilgisini alıyor olacak. Manuel eklemek istiyorsak yukarıdaki komut satırını client lar içinde kullanabiliriz fakat bu çok meşakkatli ve tercih edilmeyen bir yöntem olurdu. Bunun yerine GPO ile local NTP sunucusunu tüm client lara tanımlayabiliriz.

    NTP sunucu bilgisi kayıt defteri üzerinde aşağıdaki adreste bulunur.

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesW32TimeParameters
    Domain Controller

    GPO ile tüm client makinelere bu tanımları aktaralım.

    DC üzerinde Group Policy Management açın ve yeni bir Group Policy Object oluşturarak editleyin.

    Aşağıdaki adreste “Enable Windows NTP Client” etkinleştirin ve “Configure Windows NTP Client” ‘da aşağıdaki tanımlamarı yapın.

    Computer Configuration > Policies > Administrative Templates > System > Windows Time Service > Time Providers 
    Domain Controller

    Hazırladığınız GPO ‘yu ilgili OU dizinine atayın ve CMD üzerinde aşağıdaki komut satırını çalıştırın.

    gpupdate /force

    Atanan OU altındaki client makineler tanımlanan NTP sunucusunu bir sonraki oturumlarında alacaklardır.

    Detaylı Bilgi İçin tabiki Microsoft Documents

  • Ip Adres Export Alma İşlemi Active Directory Tüm Clientlar

    Ip Adres Export Alma İşlemi Active Directory Tüm Clientlar

    Active Directory Bilgisayar IP Adreslerini PowerShell ile Export Etme

    Ip Adres Export alma işlemi kurumsal ortamlarda oldukça önemlidir. Özellikle Active Directory ortamında yer alan makinelerin IP adreslerini topluca almak, ağ yönetimini kolaylaştırır. Bu yazıda, PowerShell kullanarak Active Directory ortamındaki tüm bilgisayarların IP adres bilgilerini dışa aktarmayı (export etmeyi) adım adım anlatacağım.

    IP Adres Export Alma

    IP Adres Export Alma

    Active Directory kurulu bir Windows Server: Ağ çapında sistem konfigürasyonlarını, kullanıcı profillerini ve uygulama bilgilerini AD veri tabanında saklar. Sistem yöneticilerinin, domain kapsamındaki tüm bilgisayarlarda masaüstü özelliklerini, ağ servislerini ve uygulamaları merkezi bir noktadan yönetebilmelerini sağlar.

    Aşağıdaki PowerShell komutu sayesinde Active Directory üzerinde bulunan tüm bilgisayarların:

    • Adı (Name)
    • İşletim sistemi bilgileri
    • IP adresleri
    • Service Pack ve OS versiyonu

    CSV dosyasına export işlemini gerçekleştirebilirsiniz.

    Get-ADComputer -Filter * -Property Name,OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion |
    ForEach-Object {
        $ip = (Test-Connection $_.Name -Count 1 -ErrorAction SilentlyContinue).IPv4Address.IPAddressToString
        [PSCustomObject]@{
            Name = $_.Name
            OperatingSystem = $_.OperatingSystem
            OperatingSystemVersion = $_.OperatingSystemVersion
            OperatingSystemServicePack = $_.OperatingSystemServicePack
            IPv4Address = $ip
        }
    } | Export-Csv "C:\test\AllComputers.csv" -NoTypeInformation -Encoding UTF8

    Not: IPv4Address bilgisi doğrudan AD nesnesinden gelmediği için Test-Connection ile manuel olarak alınmaktadır.

    CSV Çıktısı Örneği

    Name OperatingSystem Version ServicePack IPv4Address
    PC-IT01 Windows 10 Pro 10.0.19045 192.168.1.15
    PC-HR02 Windows 11 Enterprise 10.0.22000 192.168.1.23

    Belirli OU (Organizational Unit) İçin Sorgu

    Eğer yalnızca belirli bir Organizational Unit altındaki makineleri listelemek isterseniz şu şekilde kullanabilirsiniz:


    Get-ADComputer -SearchBase "OU=Bilgisayarlar,DC=example,DC=com" -Filter * -Property * ...

    AD Kullanıcı Sayısını Görmek

    Active Directory üzerinde kullanıcı sayısını görebilmenin de PowerShell komutlarıyla nasıl yapılacağını anlattığım bu yazıya göz atabilirsiniz.

    Not: Bu komutları çalıştırabilmek için Active Directory’e sorgu yapma yetkisine sahip bir hesapla oturum açmış olmanız gerekmektedir.

    Bu yöntem ile AD ortamındaki tüm bilgisayarların IP adreslerini hızlıca dışa aktarabilirsiniz. Aynı mantıkla kullanıcılar, yazıcılar veya başka nesneler için de benzer komutlar kullanılabilir.

    Daha fazla bilgi için:
    Microsoft Docs – Get-ADComputer

    Herkese kolaylıklar ve iyi çalışmalar dilerim.

  • Powershell İle Active Directory Kullanıcı Sayılarını Görmek

    Powershell İle Active Directory Kullanıcı Sayılarını Görmek

    Powershell ile Active Directory yapınızda kaç kullanıcınız var, bu kullanıcılarla ilgili kaçı aktif, kaçı pasif durumda, hangi OU nun altındalar ve kaç kullanıcınız var gibi bilgilere rahatlıkla ulaşabiliriz.

    Active Directory etki alanı kullanıcıları ve özellikleri hakkında bilgi almak için Get-ADUser cmdlet’i kullanabiliriz. Get-ADUser cmdlet’ini kullanarak, Active Directory’de bulunan bir kullanıcı hesabının herhangi bir özelliğinin değerini alabiliriz. Ve daha farklı olarak filtreleme ölçütleri belirtebilir, etki alanı kullanıcılarının ve attribut’lerin listesini oluşturabiliriz.

    Get-AdUser cmdlet’ini kullanabilmek için Windows 10 da RSAT’ın uygun sürümünü yüklemek ve Denetim Masası’ndaki Active Directory Module for Windows PowerShell’i etkinleştirmek gerekiyor.

    Powershell İle Active Directory Kullanıcı Sayılarını Görmek
    AD Modülü Windows Powershell

    Get-ADUser cmdlet’inin ile neler yapabileceğinizin tam listesi aşağıdaki gibidir.

    help Get-ADUser

    Tüm AD de bulunan tüm hesaplarının listesini aşağıdaki komutla görebiliriz.

    Get-ADUser -filter 

    NOT: Bu komutu, çok sayıda hesaba sahip etki alanlarında çalıştırmak tavsiye edilmez. DC sunucusuna aşırı yük binebilir.

    Komut çıktısında, kullanıcı hesaplarına ait (DN, SamAccountName, Name, SID, vb.) 120’den fazla attribute’lerin yalnızca temel 10 tanesi görüntülenir.

    Ve ayrıca, son şifre değişikliğinin zamanı hakkındaki bilgileri göremediğimizi fark etmişsinizdir.

    Kullanılabilir tüm kullanıcı özellikleriyle ilgili ayrıntılı bilgileri görüntülemek için şu komutu çalıştırın.

    Get-ADUser -identity testuser -properties *
    Powershell İle Active Directory Kullanıcı Sayılarını Görmek
    Powershell İle Get-ADUser

    Bu kadar bilgi, belirli attribute’larda işinize yaramayabilir. Sadece ilgilendiğiniz bilgilere ulaşmak için listeyi biraz daraltmanız gerekiyor. Aşağıdaki attribute’lere ait bilgileri görüntülemek istiyorsak eğer;

    PasswordExpired 
    PasswordLastSet
    PasswordNeverExpire

    Komutumuz şu şekilde olmalı;

    Get-ADUser testuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires
    Powershell İle Get-ADUser

    Bu bölümde neler olacak ?

    Bu kısımda karşımıza kullanıcının verisinde son şifre değişiklik tarihi ve son kullanma tarihi ile ilgili bilgiler mevcut olduğunu görüyoruz.

    Powershell İle Active Directory Kullanıcı Sayılarını Görmek
    Powershell İle Active Directory Kullanıcı Sayılarını Görmek

    Toplam kullanıcı sayısı için :

    (get-aduser –filter ).count

    Aktif kullanıcı sayısı için :

    (get-aduser -filter *|where {$_.enabled -eq “True”}).count

    Aktif olmayan kullanıcı sayısı için :

    (get-aduser -filter *|where {$_.enabled -eq “False”}).count

    Belirli bir OU altındaki kullanıcı sayısı için :

    (Get-ADUser -Filter * -SearchBase “ou=ankara,dc=tolgaceyhan,dc=com”).count

    Sonuç olarak Powershell ile AD üzerinde çalıştırıp istediğiniz kriterdeki bilgilere ulaşabilmeniz için birkaç kod paylaştım umarım kullanarak faydasını görürsünüz iyi çalışmalar dilerim kalın sağlıcakla…

    Bunların dışında yine powershell ile Network üzerinde Ip taraması hakkında detaylı bilgi için;

    PowerShell ile Network Üzerinde İp Taraması Nasıl Yapılır ? isimli makaleme de göz atabilirsiniz..

  • PowerShell ile  İp Taraması Network Üzerinde Nasıl Yapılır

    PowerShell ile İp Taraması Network Üzerinde Nasıl Yapılır

    Bu yazımızda sıklıkla kullandığımız ip taraması(Ip Scan) işlemini PowerShell ile network üzerinde nasıl yaparız ve erişim durumlarını nasıl kontrol edebiliriz bunları anlatacağız.

    Ip Nedir? 

    IP adresi (İnternet Protokolü), ağdaki cihazımızın bir adresidir. Cihazınızın, ağınızdaki ve herhangi bir lokasyondaki diğer cihazlarla iletişiminin kurmasını sağlar. IP adresi, sayılardan veya karakterlerden oluşur.

    Nasıl Ip Taraması Yapılır? (Powershell Yardımıyla Ip Taraması)

    Şimdi bu IP adreslerinin ağ üzerindeki durumlarını taramayı nasıl yapacağız bunları birlikte incelemeye başlayalım. Bunu yapabilmek için tabiki birçok program mevcuttur. Fakat iki satır kod ile powershell aracılığıyla da bu işlemleri gerçekleştirebiliriz.

    Powershell ip taraması Yapmak

     

     

    Belirlediğiniz IP aralığında (1..254) yer alan IP adreslerine ping atarak çıkan sonuçları görüntüleyebilirsiniz.

    PS C:UsersAdministrator>1..254 | %{ping -n 1 -w 15 192.168.10.$_ | select-string "reply from"}

     

     

     

    Komut sonrası örnek çıktı aşağıdaki gibidir. 

     

    PS C:UsersAdministrator> 1..254 | %{ping -n 1 -w 15 192.168.10.$_ | select-string "reply from"}Reply from 192.168.10.17: bytes=32 time<1ms TTL=63Reply from 192.168.10.18: bytes=32 time<1ms TTL=126Reply from 192.168.10.19: bytes=32 time<1ms TTL=126Reply from 192.168.10.20: bytes=32 time<1ms TTL=126Reply from 192.168.10.21: bytes=32 time<1ms TTL=126Reply from 192.168.10.22: bytes=32 time<1ms TTL=126Reply from 192.168.10.17: bytes=32 time<1ms TTL=63Reply from 192.168.10.25: bytes=32 time<1ms TTL=63Reply from 192.168.10.26: bytes=32 time=1ms TTL=126Reply from 192.168.10.25: bytes=32 time<1ms TTL=63Reply from 192.168.10.29: bytes=32 time<1ms TTL=63Reply from 192.168.10.30: bytes=32 time<1ms TTL=126Reply from 192.168.10.29: bytes=32 time=2ms TTL=63Reply from 192.168.10.41: bytes=32 time<1ms TTL=63Reply from 192.168.10.42: bytes=32 time<1ms TTL=62Reply from 192.168.10.43: bytes=32 time<1ms TTL=62



     


    Diğer PowerShell komutumuz,  ping sonucunda başarılı olan IP adreslerinin çıktısını verir.

    PS C:UsersAdministrator>1..255 | foreach-object { (new-object system.net.networkinformation.ping).Send("192.168.10.$_") } | where-object {$_.Status -eq "Success"} | select Address

     

    Komut sonrası örnek çıktı aşağıdaki gibidir.

    PS C:UsersAdministrator>1..255 | foreach-object { (new-object system.net.networkinformation.ping).Send("192.168.10.$_") } | where-object {$_.Status -eq "Success"} | select AddressAddress-------192.168.10.17192.168.10.18192.168.10.19192.168.10.20192.168.10.21192.168.10.22
    
    192.168.10.17192.168.10.25192.168.10.26192.168.10.25
    
    192.168.10.29192.168.10.30192.168.10.29192.168.10.41192.168.10.42192.168.10.43

     

    Bu yazımızda microsoft windows powershell ile ip taraması nasıl yapılacağına dair kısa bilgiler verdim. Yeni oluşturacağınız bir ağ yapısında işleme başlamadan önce, özelikle bilmediğiniz bir network ise işinize yarayacak komutlar olduğunu düşünüyorum.