Command Palette

Search for a command to run...

Windows 10'dan Windows 11'e PowerShell Kullanarak Yükseltme
Windows 10'dan Windows 11'e PowerShell Kullanarak Yükseltme10.04.2025

13 Ekim 2025 tarihinde Microsoft, Windows 10 desteğini resmi olarak sonlandıracak. BT yöneticileri ve sistem yöneticileri için bu son tarih, takvimdeki bir tarihten çok daha fazlasını ifade ediyor; operasyonel sorumluluklarda ve risk yönetiminde önemli bir değişimi işaret ediyor.

Windows 11'e yükseltme, gelişmiş güvenlik, performans iyileştirmeleri ve modern bir kullanıcı deneyimi sunarken, bu geçişin zorlukları da yok değil. Hala Windows 10 cihazlara büyük ölçüde bağımlı olan kuruluşlar için önümüzdeki aylar kritik olacak.


BT Yöneticileri İçin İş Yükü

Windows 10 desteğinin sona ermesi, BT ekipleri için açık bir aciliyet yaratıyor. Büyük ölçekli işletim sistemi yükseltmelerini planlamak şunları gerektirir:

  1. Birden fazla departman ve ofis arasında programları koordine etmek.
  2. Kritik iş operasyonlarında kesintileri önlemek için kesinti süresini en aza indirmek.
  3. Eski uygulamalar ve donanımlarla uyumluluğu sağlamak.
  4. Yükseltmeler sırasında ve sonrasında son kullanıcı desteği, iletişimi ve sorun gidermeyi yönetmek.

Bu görevler hızla çoğalarak BT yöneticileri için artan bir iş yükü oluşturabilir ve zaten kısıtlı olan kaynakları zorlayabilir.


Zamanlama Zorluğu

Normal çalışma saatlerinde yükseltme yapmak nadiren bir seçenektir. Çalışanların aktif oturumlarını kesintiye uğratmak, üretkenlik kaybına, kaydedilmemiş çalışmalara ve hayal kırıklığına yol açabilir. Sonuç olarak, çoğu BT ekibi yükseltmeleri mesai saatleri dışında (gece geç saatler, hafta sonları veya tatiller) planlamak zorunda kalır, bu da kaynak yönetimini daha da zorlaştırır.


Gecikmenin Riskleri

Yükseltme yapmayan kuruluşlar, aşağıdakiler de dahil olmak üzere kritik risklerle karşı karşıya kalır:

  1. Güvenlik açıkları: Düzenli güncellemeler olmadan, Windows 10 çalıştıran sistemler kötü amaçlı yazılımlar, fidye yazılımları ve gelişmiş siber saldırılar için kolay hedefler haline gelecektir.
  2. Uyumluluk sorunları: Güncel olmayan sistemleri çalıştırmak, özellikle katı veri koruma kurallarına bağlı sektörlerde yasal uyumsuzluğa yol açabilir.
  3. Sınırlı destek: Donanım satıcıları ve yazılım sağlayıcıları, Windows 10 uyumluluğunu kademeli olarak durduracak ve BT'yi daha az destek seçeneğiyle baş başa bırakacaktır.
  4. Operasyonel kesinti: Bir güvenlik ihlali veya sistem arızası durumunda, kurtarma maliyetleri ve kesinti süresi, bugün bir yükseltme planlama çabasından çok daha ağır basabilir.

Yükseltmeyi PowerShell ile Otomatikleştirme

Neyse ki, otomasyon manuel yükün çoğunu azaltmaya yardımcı olabilir. PowerShell betikleri kullanarak, BT yöneticileri Windows 10'dan 11'e yükseltmeleri birden fazla makinede standartlaştırabilir ve zamanlayabilir; bu da zaman kazandırır ve hataları azaltır.

Aşağıda, ortamınızda yükseltmeyi yürütmek için kullanabileceğiniz bir PowerShell betiği için yer tutucu bölüm bulunmaktadır:


# Define the log file path

$logFilePath = "C:\Windows11UpgradeLog.txt"

# Create a temporary download folder

$tempFolder = "C:\Windows11UpgradeTemp"

if (-Not (Test-Path $tempFolder)) {

New-Item -ItemType Directory -Path $tempFolder | Out-Null

}

# Define file download locations

$installAssistantUrl = "https://go.microsoft.com/fwlink/?linkid=2171764" # Updated link

$isoDownloadUrl = "https://www.microsoft.com/en-us/software-download/windows11"

# Define local file paths

$installAssistantPath = "$tempFolder\Windows11InstallationAssistant.exe"

$isoDownloadPath = "$tempFolder\Windows11ISO.html" # Save the link since ISO download requires interaction

# Function to log messages with a timestamp

function Log-Message {

param (

[string]$message

)

# Append the message with a timestamp to the log file

"$((Get-Date).ToString('yyyy-MM-dd HH:mm:ss')) - $message" | Out-File -FilePath $logFilePath -Append

}

# Check for 64-bit architecture CPU

try {

$cpu = Get-CimInstance Win32_Processor

if ($cpu.AddressWidth -eq 64) {

Log-Message "CPU architecture is 64-bit: true"

} else {

Log-Message "CPU architecture is 64-bit: false"

}

} catch {

Log-Message "Failed to retrieve CPU architecture information."

}

# Check for TPM 2.0

$TPM_Enabled = $false

try {

$tpm = Get-WmiObject -Namespace "Root\CIMv2\Security\MicrosoftTpm" -Class Win32_Tpm

if ($tpm.SpecVersion -like "2.0*") {

Log-Message "TPM 2.0 is enabled: true"

$TPM_Enabled = $true

} else {

Log-Message "TPM 2.0 is enabled: false"

}

} catch {

Log-Message "Failed to retrieve TPM information."

}

# Check for Secure Boot

$SecureBoot_Enabled = $false

try {

$secureBoot = Confirm-SecureBootUEFI

if ($secureBoot) {

Log-Message "Secure Boot is enabled: true"

$SecureBoot_Enabled = $true

} else {

Log-Message "Secure Boot is enabled: false"

}

} catch {

Log-Message "Failed to retrieve Secure Boot status."

}

# If TPM 2.0 or Secure Boot is missing, cancel the upgrade

if (-not $TPM_Enabled -or -not $SecureBoot_Enabled) {

Log-Message "System does not meet Windows 11 requirements (TPM 2.0 or Secure Boot missing). Upgrade cancelled."

Exit

}

# Function to download the Windows 11 Installation Assistant

function Download-InstallationAssistant {

try {

Log-Message "Downloading Windows 11 Installation Assistant..."

Invoke-WebRequest -Uri $installAssistantUrl -OutFile $installAssistantPath

Log-Message "Download completed: $installAssistantPath"

}

catch {

Log-Message "Failed to download Windows 11 Installation Assistant."

}

}

# Function to save the Windows 11 ISO download link

function Save-ISO-DownloadLink {

try {

Log-Message "Saving Windows 11 ISO download link..."

"<html><body><a href='$isoDownloadUrl'>Download Windows 11 ISO</a></body></html>" | Out-File -FilePath $isoDownloadPath

Log-Message "ISO download link saved to: $isoDownloadPath"

}

catch {

Log-Message "Failed to save Windows 11 ISO download link."

}

}

# Function to install the Windows 11 Installation Assistant

function Install-InstallationAssistant {

try {

# Define the arguments

$arguments = "/QuietInstall /SkipEULA /Auto Upgrade /ShowProgressInTaskBarIcon"

Log-Message "Starting Windows 11 Installation Assistant with arguments: $arguments"

# Start the installation assistant with the defined arguments

$process = Start-Process -FilePath $installAssistantPath -ArgumentList $arguments -PassThru -NoNewWindow

# Immediately log the process ID after starting the process

Log-Message "Windows 11 Installation Assistant started with ID: $($process.Id)"

# Wait for the process to exit

$process.WaitForExit()

# Check if the process has exited and log the exit code

if ($process.HasExited) {

Log-Message "Windows 11 Installation Assistant process has exited with code: $($process.ExitCode)"

}

} catch {

Log-Message "Failed to start Windows 11 Installation Assistant. Error: $_"

}

}

# Check if the Installation Assistant is already downloaded

if (Test-Path $installAssistantPath) {

Log-Message "Windows 11 Installation Assistant is already downloaded."

} else {

Download-InstallationAssistant

}

# Save the ISO download link

Save-ISO-DownloadLink

# Run the installation assistant

if (Test-Path $installAssistantPath) {

Install-InstallationAssistant

} else {

Log-Message "Installation Assistant not found, skipping installation."

}

Log-Message "Script execution completed."



İleriye Dönük Adımlar

Windows 10'dan Windows 11'e geçiş sadece teknik bir zorunluluk değil; kuruluşunuzun güvenliğini ve verimliliğini korumak için stratejik bir adımdır. BT yöneticileri şimdiden hazırlanarak kesintiyi en aza indirebilir ve destek süresi dolmadan sorunsuz bir geçiş sağlayabilir.


Bu betiği Monitic RMM ile toplu olarak dağıtabileceğinizi ve Windows 11 geçişinizi tamamlayabileceğinizi biliyor muydunuz? https://www.monitic.com