Active Directory ortamında çalışan bir sistem yöneticisi olarak günün büyük bölümünü komut satırında geçiriyorsanız, cd komutunun ne kadar kritik bir araç olduğunu zaten biliyorsunuzdur. Ama “ne var ki bunda, dizin değiştiriyorsun işte” diye düşünmeyin. Bu yazıda hem Windows hem de Linux tarafında cd komutunun tüm inceliklerini, Active Directory yönetimi bağlamında gerçek dünya senaryolarıyla ele alacağız.
cd Komutu Nedir ve Neden Önemlidir?
cd (Change Directory), işletim sistemlerinin komut satırı arayüzlerinde çalışma dizinini değiştirmek için kullanılan temel komuttur. Windows’ta cmd.exe ve PowerShell, Linux/Unix sistemlerde ise bash, zsh gibi kabuklar üzerinde çalışır. Adı basit, işlevi basit gibi görünse de doğru kullanmak ciddi zaman tasarrufu sağlar.
Active Directory yönetiminde neden cd bu kadar önemli? Çünkü AD ortamında log dosyaları, SYSVOL paylaşımı, Group Policy şablonları, script dizinleri ve araç klasörleri arasında sürekli geçiş yaparsınız. Dizin navigasyonunda hızlı ve hatasız olmak, özellikle kritik bir sorun anında dakikaları kurtarabilir.
Windows Komut Satırında cd Kullanımı
Temel Kullanım
Windows’ta cmd.exe üzerinde cd komutunun sözdizimi oldukça sezgiseldir.
cd C:WindowsSystem32
Bu komut sizi doğrudan System32 klasörüne götürür. Ama dikkat: Windows’ta varsayılan davranış olarak, farklı bir sürücüye geçmek için sadece cd yetmez. Örneğin C: sürücüsünde çalışırken D: sürücüsüne geçmek istiyorsanız:
cd /d D:ScriptsAD_Tools
/d parametresi olmadan sadece cd D:ScriptsAD_Tools yazarsanız, komut bir hata vermez ama sizi D: sürücüsüne de götürmez. Klasik Windows tuzağı. Bu yüzden farklı sürücüler arasında geçiş yaparken /d parametresini alışkanlık haline getirin.
Parametre Listesi
- /d: Sürücü değişikliğiyle birlikte dizin değiştirir
- ..: Bir üst dizine çıkar
- \: Sürücünün kök dizinine gider
- ~: PowerShell’de kullanıcının home dizinine döner (cmd.exe’de çalışmaz)
Üst Dizine Çıkmak ve Kök Dizine Gitmek
cd ..
Bir üst klasöre çıkar. Örneğin C:WindowsSystem32 içindeyken bu komutu çalıştırırsanız C:Windows dizinine geçersiniz.
İki üst dizine çıkmak için:
cd ....
Kök dizine hızlıca gitmek için:
cd
Bu komut sizi C: dizinine götürür. Özellikle derinlemesine iç içe dizinlerde kaybolduğunuzda kurtarıcı olur.
PowerShell’de cd Kullanımı
PowerShell’de cd, aslında Set-Location cmdlet’inin bir takma adıdır (alias). Bu önemli bir ayrım çünkü PowerShell’de cd ile yapabileceğiniz her şeyi Set-Location ile de yapabilirsiniz ve scripting tarafında Set-Location kullanmak daha okunabilir kod üretir.
Set-Location -Path "C:WindowsSYSVOLsysvol"
Veya kısaca:
cd C:WindowsSYSVOLsysvol
PowerShell’de Özel Kullanımlar
PowerShell’de cd sadece dosya sistemiyle sınırlı kalmaz. Bu, PowerShell’i cmd.exe’den köklü biçimde ayıran özelliktir. Registry, Active Directory, sertifika deposu gibi farklı “sağlayıcılara” da cd ile gezebilirsiniz.
Registry içinde gezinmek için:
cd HKLM:SOFTWAREMicrosoftWindows NTCurrentVersion
Active Directory sağlayıcısı yüklüyse (RSAT araçları kurulu ve AD modülü import edilmişse):
Import-Module ActiveDirectory
cd AD:
Bu sayede AD yapısını bir dosya sistemi gibi gezebilirsiniz:
cd "AD:DC=contoso,DC=com"
Bu özellik, AD objelerini hızlıca keşfetmek ve script geliştirmek için son derece kullanışlıdır.
Push-Location ve Pop-Location: Gelişmiş Navigasyon
Active Directory yönetiminde sık karşılaşılan senaryo: bir log klasöründen çalışırken, hızlıca başka bir dizine gidip iş yapmanız gerekir ve sonra geri dönmeniz lazım. İşte tam burada Push-Location ve Pop-Location devreye girer.
Push-Location "C:WindowsSYSVOLsysvolcontoso.comPolicies"
# Burada işlerini yap
ls
# Sonra önceki konuma dön
Pop-Location
Push-Location, mevcut konumunuzu bir yığına (stack) kaydeder ve sizi yeni konuma götürür. Pop-Location ise yığından son kaydedilen konumu alarak sizi oraya geri döndürür. Bu mekanizma, karmaşık scriptlerde çok değerli bir araçtır.
Active Directory Yönetiminde Pratik Senaryolar
Senaryo 1: SYSVOL Dizininde GPO Şablonlarını Kontrol Etmek
Bir sabah işe geldiniz ve kullanıcıların GPO’ların uygulanmadığından şikayet ettiğini gördünüz. İlk adım SYSVOL dizinine gidip kontrol yapmak:
cd C:WindowsSYSVOLsysvolcontoso.comPolicies
dir
Burada GPO GUID klasörlerini görürsünüz. Belirli bir GPO’nun içine girmek ve script klasörünü kontrol etmek için:
cd "{31B2F340-016D-11D2-945F-00C04FB984F9}MachineScriptsStartup"
dir
Bu GUID, varsayılan Domain Policy’ye aittir. Kendi ortamınızdaki GUID’leri Get-GPO -All komutuyla öğrenebilirsiniz.
Senaryo 2: DC Log Dosyalarını Analiz Etmek
Domain Controller üzerinde problem ayıklama yapıyorsunuz. Windows Event logları dışında, özellikle DC Promotion/Demotion süreçlerine ait log dosyaları farklı konumlarda bulunur:
cd C:Windowsdebug
dir netlogon*
Netlogon log dosyaları burada bulunur ve Kerberos, authentication, DC bulma süreçleriyle ilgili kritik bilgiler içerir.
DCDIAG ve benzeri araçların çıktı dosyaları için script dizinine gitmek:
cd D:AdminScriptsLogs
notepad dcdiag_$(Get-Date -Format "yyyyMMdd").txt
Senaryo 3: NTDS Veritabanı Bakım Operasyonları
Active Directory veritabanı (ntds.dit) ile ilgili bakım işlemleri yaparken, örneğin offline defragmentation veya veritabanı taşıma işlemlerinde, doğru dizinde olmanız kritiktir. Bu işlemleri her zaman dikkatli ve planlı yapın:
cd C:WindowsNTDS
dir
Bu komutla NTDS dizininde ntds.dit, edb.log ve diğer transaction log dosyalarını görebilirsiniz. ntdsutil aracını bu dizinde çalıştırmadan önce doğru konumda olduğunuzu doğrulayın.
Senaryo 4: RSAT Araçları ve Script Yönetimi
Bir sistem yöneticisi olarak muhtemelen onlarca PowerShell scripti biriktirdiniz. Bu scriptleri organize bir şekilde çalıştırmak için:
cd D:ScriptsAD_Management
ls *.ps1
Belirli bir script kategorisine geçmek:
cd .UserManagement
.New-BulkUsers.ps1 -InputFile "C:HRnew_employees.csv"
Senaryo 5: Active Directory Sağlayıcısıyla Gelişmiş Navigasyon
PowerShell’in AD sağlayıcısını kullanarak AD yapısını gezebilirsiniz. Bu özellik, özellikle OU yapısını keşfetmek ve nesneleri hızlıca listelemek için işe yarar:
Import-Module ActiveDirectory
cd "AD:DC=contoso,DC=com"
ls
Belirli bir OU’ya inmek:
cd "OU=Istanbul,OU=Turkey,DC=contoso,DC=com"
ls | Where-Object {$_.ObjectClass -eq "user"}
Bu yöntem, karmaşık OU hiyerarşilerinde hızlı keşif yapmak için oldukça pratiktir. Özellikle ortama yeni dahil olduğunuzda ve OU yapısını anlamaya çalıştığınızda zaman kazandırır.
Linux/Unix Tarafında cd Kullanımı
Active Directory ortamları artık sadece Windows sistemlerden oluşmuyor. Samba DC’leri, Linux tabanlı kimlik doğrulama sunucuları, Azure AD Connect makineleri gibi Linux sistemler de AD ekosisteminin parçası haline geldi. Bu nedenle Linux’ta cd kullanımını da iyi bilmeniz gerekiyor.
Temel Linux cd Kullanımı
cd /etc/samba
Samba konfigürasyon dosyasına gitmek için kullanılan bu komut, Linux ortamında Samba tabanlı AD yönetimi yapanların sık ziyaret ettiği bir yoldur.
Home dizinine hızlıca dönmek:
cd ~
# veya sadece
cd
Parametresiz çalıştırılan cd komutu Linux’ta sizi her zaman home dizinine götürür. Bu davranış Windows’ta yoktur.
Önceki dizine geri dönmek (son kullanılan dizine):
cd -
Bu özellik inanılmaz derecede kullanışlıdır. İki dizin arasında sürekli gidip geliyorsanız:
cd /var/log/samba
# bir şeyler baktın
cd /etc/krb5.conf
# hayır dosya dizini değil
cd /etc
# tekrar samba loglarına dön
cd -
cd - sizi bir önceki dizine anında götürür. Bu kısa ama çok etkili bir özellik.
Samba ve Kerberos Konfigürasyon Dizinleri
Linux üzerinde AD entegrasyonu yaparken sık ziyaret ettiğiniz dizinler:
cd /etc/samba
ls -la
Kerberos konfigürasyonu:
cd /etc/krb5.conf.d
cat *.conf
SSSD (System Security Services Daemon) konfigürasyonu:
cd /etc/sssd
cat sssd.conf
Mutlak ve Göreli Yollar
Linux’ta (ve Windows’ta) iki tür yol vardır: mutlak (absolute) ve göreli (relative). Bu ayrımı iyi anlamak, hem hata yapmamak hem de daha hızlı çalışmak açısından kritiktir.
Mutlak yol her zaman kök dizinden başlar:
cd /var/log/samba
Göreli yol ise bulunduğunuz konuma göre çalışır:
# /var/log içindeyken
cd samba
# artık /var/log/samba içindesiniz
Tab Tamamlama: cd’nin Gizli Silahı
cd komutunu gerçek anlamda hızlandıran şey, Tab tamamlama özelliğidir. Bu özelliği aktif kullanmak, dizin gezintisini dramatik biçimde hızlandırır.
Windows cmd.exe’de: Tab tuşuna basarak dizin adlarını tamamlayabilirsiniz. Birden fazla eşleşme varsa, Tab’a tekrar basarak diğer seçeneklere geçersiniz.
PowerShell’de: Tab tamamlama çok daha güçlüdür. Kısmi isim yazıp Tab’a bastığınızda eşleşen tüm seçenekler arasında gezebilirsiniz. Ayrıca Ctrl+Space ile seçeneklerin listesini görebilirsiniz.
Linux bash’te: cd /etc/sa yazıp Tab’a bastığınızda samba gibi eşleşen dizinler otomatik tamamlanır veya listelenir.
Tab tamamlamayı alışkanlık haline getirin. Özellikle GUID içeren GPO klasörleri veya uzun Unix yolları gibi durumlarda bu özellik olmadan çalışmak çok yorucu olur.
Ortam Değişkenleri ile Akıllı Navigasyon
Sık kullandığınız dizinleri ortam değişkenlerine atayarak cd kullanımını daha da verimli hale getirebilirsiniz.
Windows PowerShell’de profil dosyanıza ekleyebileceğiniz kısayollar:
# PowerShell profil dosyasına ekle: $PROFILE
function scripts { cd D:ScriptsAD_Management }
function sysvol { cd C:WindowsSYSVOLsysvol }
function ntds { cd C:WindowsNTDS }
function adlogs { cd C:Windowsdebug }
Artık sadece sysvol yazarak o dizine gidebilirsiniz.
Linux bash’te benzer yaklaşım:
# ~/.bashrc dosyasına ekle
export ADSCRIPTS="/opt/scripts/ad_management"
export SAMBALOGS="/var/log/samba"
alias goad="cd $ADSCRIPTS"
alias golog="cd $SAMBALOGS"
Bu tür kısayollar, özellikle gece yarısı bir incident sırasında sinir bozucu uzun yolları yazmak zorunda kalmamak için büyük fark yaratır.
Sık Yapılan Hatalar ve Çözümleri
Boşluk İçeren Dizin Adları
Windows’ta “Program Files” gibi boşluk içeren dizin adlarına giderken tırnak işareti kullanmayı unutmak klasik bir hatadır:
# Hatalı
cd C:Program FilesMicrosoft
# Doğru
cd "C:Program FilesMicrosoft"
Linux’ta aynı kural geçerlidir:
cd "/opt/AD Tools/scripts"
Windows’ta Sürücü Değiştirme Hatası
Daha önce bahsettiğimiz /d parametresi meselesi:
# Sadece dizin değişir, sürücü değişmez
cd D:Scripts
# Hem sürücü hem dizin değişir
cd /d D:Scripts
PowerShell’de UNC Yolları
PowerShell’de cd komutuyla doğrudan UNC yoluna (\servershare) gitmek bazen sorun çıkarabilir. Bunun için Set-Location ile FileSystem sağlayıcısını açıkça belirtebilirsiniz:
cd "\DC01SYSVOLcontoso.comPolicies"
Bu genellikle çalışır, ancak network paylaşımlarında sorun yaşarsanız PSDrive oluşturmayı düşünün:
New-PSDrive -Name SYSVOL -PSProvider FileSystem -Root "\DC01SYSVOL"
cd SYSVOL:contoso.comPolicies
Günlük AD Yönetimi için cd Workflow’u
Sabah işe geldiğinizde yapmanız gereken kontrolleri hızlandırmak için tipik bir workflow:
# Domain Controller sağlık kontrolü için log dizinine git
cd C:Windowsdebug
# Netlogon hatalarına bak
Select-String -Path netlogon.log -Pattern "ERROR" | Select-Object -Last 20
# SYSVOL replikasyon durumu için
cd C:WindowsSYSVOLsysvolcontoso.com
dir
# Sonra admin scriptlerine dön
cd D:ScriptsDailyChecks
.Run-MorningChecks.ps1
Bu tür bir sabah rutini oluşturmak, özellikle birden fazla DC yönetiyorsanız işleri standartlaştırır ve gözden kaçan sorunları azaltır.
Sonuç
cd komutu, görünürde en basit araçlardan biri. Ama bir sistem yöneticisi için bu komutun tüm inceliklerini, platform farklarını ve gelişmiş kullanım senaryolarını bilmek; iş verimliliğini, hata oranını ve özellikle kriz anlarındaki tepki süresini doğrudan etkiler.
Windows tarafında /d parametresini, PowerShell’de Push-Location/Pop-Location ikilisini ve AD sağlayıcısı üzerinden gezinmeyi öğrenmek; Linux tarafında cd - ile cd ~ kısayollarını ve Tab tamamlamayı alışkanlık haline getirmek, sizi ortalama bir sysadmin’den ayıran küçük ama etkili detaylardır.
Active Directory ortamı büyüdükçe, SYSVOL, NTDS, Group Policy şablonları, log dosyaları ve script dizinleri arasındaki geçişler daha da sık hale gelir. Bu yüzden dizin navigasyonunu otomatikleştiren profil fonksiyonları ve alias’lar oluşturmak, hem zamandan tasarruf ettirir hem de kritik anlarda sizi doğru konuma hızla taşır.
Temelleri iyi bilmek, her zaman işe yarar. cd gibi “basit” araçları gerçekten ustalıkla kullanmak, iyi bir sistem yöneticisinin ayırt edici özelliklerinden biridir.