KOD İÇERİĞİ :
Kod: Tümünü seç
# netfx35_kur.ps1
# .NET Framework 3.5'i Windows 10/11 üzerinde etkinleştirir.
# Yöntem 1 : Windows Update üzerinden (internet bağlantısı gerekir)
# Yöntem 2 : Harici kaynak (ISO veya USB) üzerinden
# Kullanım : Sağ tıkla > "PowerShell ile Çalıştır"
#Requires -Version 5.1
Set-StrictMode -Version Latest
$ErrorActionPreference = "SilentlyContinue"
# --- Yönetici hakkı kontrolü ve otomatik yükseltme ---
function YoneticiHakkiKontrol {
$mevcutKullanici = [Security.Principal.WindowsIdentity]::GetCurrent()
$yetkiKontrol = New-Object Security.Principal.WindowsPrincipal($mevcutKullanici)
if (-not $yetkiKontrol.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Host "Yönetici yetkisi gerekiyor, yeniden başlatılıyor..." -ForegroundColor Yellow
Start-Process -FilePath "powershell.exe" `
-ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" `
-Verb RunAs
exit
}
}
# --- .NET Framework 3.5 kurulu mu kontrol et ---
function NetFxDurumKontrol {
$durum = Get-WindowsOptionalFeature -Online -FeatureName "NetFx3"
return $durum.State
}
# --- İlerleme çubuğu göster ---
function IlerlemeGoster {
param([string]$Mesaj, [int]$Yuzde)
Write-Progress -Activity ".NET Framework 3.5 Kurulumu" `
-Status $Mesaj `
-PercentComplete $Yuzde
}
# --- Yöntem 1: Windows Update üzerinden kur ---
function WindowsUpdateIleKur {
Write-Host "`nWindows Update üzerinden kurulum başlatılıyor..." -ForegroundColor Yellow
Write-Host "İnternet bağlantısı gereklidir, lütfen bekleyin...`n" -ForegroundColor Gray
IlerlemeGoster -Mesaj "Paket indiriliyor ve kuruluyor..." -Yuzde 10
try {
$sonuc = Enable-WindowsOptionalFeature `
-Online `
-FeatureName "NetFx3" `
-All `
-NoRestart `
-ErrorAction Stop
IlerlemeGoster -Mesaj "Tamamlandı." -Yuzde 100
Write-Progress -Activity ".NET Framework 3.5 Kurulumu" -Completed
Write-Host ".NET Framework 3.5 başarıyla etkinleştirildi." -ForegroundColor Green
if ($sonuc.RestartNeeded) {
Write-Host "Değişikliklerin geçerli olması için sistemi yeniden başlatmanız gerekiyor." -ForegroundColor Yellow
$yanit = Read-Host "Şimdi yeniden başlatılsın mı? (E/H)"
if ($yanit -match "^[Ee]$") {
Restart-Computer -Force
}
}
} catch {
Write-Progress -Activity ".NET Framework 3.5 Kurulumu" -Completed
Write-Host "`nHata oluştu: $_" -ForegroundColor Red
Write-Host "Windows Update erişimi başarısız olabilir." -ForegroundColor Red
Write-Host "Harici kaynak yöntemini deneyin (seçenek 2)." -ForegroundColor Yellow
}
}
# --- Yöntem 2: Harici kaynak üzerinden kur (ISO/USB) ---
function HariciKaynaktanKur {
Write-Host "`nHarici kaynak yöntemi seçildi." -ForegroundColor Yellow
Write-Host "Windows 10/11 ISO dosyasının bağlı olması veya kurulum USB'sinin takılı olması gerekir.`n" -ForegroundColor Gray
# Kaynak dizin otomatik arama
$olasiYollar = @()
Get-PSDrive -PSProvider FileSystem | ForEach-Object {
$aday = "$($_.Root)sources\sxs"
if (Test-Path $aday) {
$olasiYollar += $aday
}
}
if ($olasiYollar.Count -gt 0) {
Write-Host "Olası kaynak dizin(ler) bulundu:" -ForegroundColor Cyan
for ($i = 0; $i -lt $olasiYollar.Count; $i++) {
Write-Host " $($i + 1). $($olasiYollar[$i])"
}
Write-Host " M. Manuel giriş"
$secim = Read-Host "`nSeçiminiz"
if ($secim -match "^\d+$" -and [int]$secim -ge 1 -and [int]$secim -le $olasiYollar.Count) {
$kaynakYol = $olasiYollar[[int]$secim - 1]
} else {
$kaynakYol = Read-Host "Kaynak dizin yolunu girin (örnek: D:\sources\sxs)"
}
} else {
Write-Host "Otomatik kaynak dizin bulunamadı." -ForegroundColor DarkYellow
$kaynakYol = Read-Host "Kaynak dizin yolunu manuel girin (örnek: D:\sources\sxs)"
}
# Yol doğrulama
if ([string]::IsNullOrWhiteSpace($kaynakYol)) {
Write-Host "Kaynak yol boş bırakılamaz." -ForegroundColor Red
return
}
if (-not (Test-Path $kaynakYol)) {
Write-Host "Kaynak dizin bulunamadı: $kaynakYol" -ForegroundColor Red
return
}
# Kaynak içinde gerekli dosyayı ara
$netfxDosya = Join-Path $kaynakYol "microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~amd64~~.cab"
if (-not (Test-Path $netfxDosya)) {
Write-Host "Kaynak dizinde .NET Framework 3.5 paketi bulunamadı." -ForegroundColor Red
Write-Host "Dizin geçerli bir Windows kurulum kaynağı olmayabilir." -ForegroundColor Red
return
}
Write-Host "`nKaynak doğrulandı: $kaynakYol" -ForegroundColor Green
Write-Host "Kurulum başlatılıyor, lütfen bekleyin...`n" -ForegroundColor Yellow
IlerlemeGoster -Mesaj "Harici kaynaktan kuruluyor..." -Yuzde 10
try {
$sonuc = Enable-WindowsOptionalFeature `
-Online `
-FeatureName "NetFx3" `
-Source $kaynakYol `
-All `
-NoRestart `
-ErrorAction Stop
IlerlemeGoster -Mesaj "Tamamlandı." -Yuzde 100
Write-Progress -Activity ".NET Framework 3.5 Kurulumu" -Completed
Write-Host ".NET Framework 3.5 başarıyla etkinleştirildi." -ForegroundColor Green
if ($sonuc.RestartNeeded) {
Write-Host "Değişikliklerin geçerli olması için sistemi yeniden başlatmanız gerekiyor." -ForegroundColor Yellow
$yanit = Read-Host "Şimdi yeniden başlatılsın mı? (E/H)"
if ($yanit -match "^[Ee]$") {
Restart-Computer -Force
}
}
} catch {
Write-Progress -Activity ".NET Framework 3.5 Kurulumu" -Completed
Write-Host "`nHata oluştu: $_" -ForegroundColor Red
}
}
# --- Yöntem 3: DISM komutu ile kur (alternatif yöntem) ---
function DismIleKur {
Write-Host "`nDISM yöntemi seçildi." -ForegroundColor Yellow
Write-Host "Bu yöntem Windows Update bağlantısını kullanır.`n" -ForegroundColor Gray
IlerlemeGoster -Mesaj "DISM üzerinden kuruluyor..." -Yuzde 10
try {
$dismCikti = & dism.exe /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /NoRestart 2>&1
IlerlemeGoster -Mesaj "DISM tamamlandı." -Yuzde 100
Write-Progress -Activity ".NET Framework 3.5 Kurulumu" -Completed
if ($LASTEXITCODE -eq 0 -or $LASTEXITCODE -eq 3010) {
Write-Host ".NET Framework 3.5 DISM ile başarıyla kuruldu." -ForegroundColor Green
if ($LASTEXITCODE -eq 3010) {
Write-Host "Değişikliklerin geçerli olması için sistemi yeniden başlatmanız gerekiyor." -ForegroundColor Yellow
$yanit = Read-Host "Şimdi yeniden başlatılsın mı? (E/H)"
if ($yanit -match "^[Ee]$") {
Restart-Computer -Force
}
}
} else {
Write-Host "DISM kurulumu başarısız oldu. Çıkış kodu: $LASTEXITCODE" -ForegroundColor Red
Write-Host "DISM çıktısı:`n$dismCikti" -ForegroundColor DarkRed
}
} catch {
Write-Progress -Activity ".NET Framework 3.5 Kurulumu" -Completed
Write-Host "Hata oluştu: $_" -ForegroundColor Red
}
}
# --- Ana menü ---
function AnaMenu {
while ($true) {
# Mevcut durum
$mevcutDurum = NetFxDurumKontrol
$durumMetin = if ($mevcutDurum -eq "Enabled") { "Etkin" } else { "Devre Disi" }
$durumRenk = if ($mevcutDurum -eq "Enabled") { "Green" } else { "Red" }
Write-Host "`n========================================" -ForegroundColor Cyan
Write-Host " .NET Framework 3.5 Kurulum Araci" -ForegroundColor Cyan
Write-Host " Windows 10 / 11" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " Mevcut Durum: " -NoNewline
Write-Host $durumMetin -ForegroundColor $durumRenk
Write-Host "----------------------------------------" -ForegroundColor Cyan
if ($mevcutDurum -eq "Enabled") {
Write-Host " .NET Framework 3.5 zaten etkin durumda." -ForegroundColor Green
Write-Host " Ek bir islem yapmaniza gerek yok." -ForegroundColor Green
Write-Host "`n 0. Cikis"
$secim = Read-Host "`nSeciminiz"
if ($secim -eq "0") { exit }
continue
}
Write-Host " 1. Windows Update uzerinden kur (internet gerekir)"
Write-Host " 2. Harici kaynak uzerinden kur (ISO/USB)"
Write-Host " 3. DISM ile kur (alternatif)"
Write-Host " 0. Cikis"
Write-Host "========================================" -ForegroundColor Cyan
$secim = Read-Host "`nSeciminiz"
switch ($secim) {
"1" { WindowsUpdateIleKur }
"2" { HariciKaynaktanKur }
"3" { DismIleKur }
"0" { Write-Host "Cikiliyor..." -ForegroundColor Gray; exit }
default { Write-Host "Gecersiz secim, tekrar deneyin." -ForegroundColor Red }
}
Write-Host "`nDevam etmek icin bir tusa basin..."
$null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
}
}
# ============================================================
# BASLANGIC
# ============================================================
YoneticiHakkiKontrol
AnaMenuBetik açılışta .NET 3.5 zaten etkinse sizi doğrudan bilgilendirip kurulum menüsünü göstermiyor. Harici kaynak seçildiğinde bağlı sürücüleri otomatik tarayıp sources\sxs dizinini buluyor, elle yazmanıza gerek kalmıyor.
1. Windows Update üzerinden kurulum
İnternet bağlantısı gerekir. Enable-WindowsOptionalFeature komutu Microsoft sunucularına bağlanarak paketi indirir ve kurar. Normal şartlarda önerilen yöntem budur.
2. Harici kaynak üzerinden kurulum (ISO/USB)
İnternet bağlantısı gerekmez. Windows 10/11 kurulum ISO dosyası bağlıysa veya kurulum USB'si takılıysa sources\sxs dizinini otomatik tarar, bulamazsa manuel yol girişi ister. Kurumsal ortamlarda veya internet erişimi kısıtlı sistemlerde tercih edilir.
3. DISM ile kurulum
İlk iki yöntem başarısız olduğunda devreye girer. Doğrudan dism.exe aracını çağırır, Windows Update bağlantısını kullanır. PowerShell katmanını atlayarak işletim sisteminin kendi dağıtım servisiyle kurulum yapar.
Güle güle kullanın...




