Command Palette

Search for a command to run...

Aktualizacja z Windows 10 do Windows 11 za pomocą PowerShell
Aktualizacja z Windows 10 do Windows 11 za pomocą PowerShell10.04.2025

13 października 2025 roku Microsoft oficjalnie zakończy wsparcie dla Windows 10. Dla administratorów IT i menedżerów systemów ten termin to coś więcej niż data w kalendarzu — oznacza on znaczącą zmianę w obowiązkach operacyjnych i zarządzaniu ryzykiem.

Chociaż aktualizacja do Windows 11 przynosi zwiększone bezpieczeństwo, poprawę wydajności i zmodernizowane środowisko użytkownika, przejście to nie jest pozbawione wyzwań. Dla organizacji, które nadal w dużym stopniu polegają na urządzeniach z Windows 10, nadchodzące miesiące będą kluczowe.


Obciążenie dla menedżerów IT

Zakończenie wsparcia dla Windows 10 stwarza wyraźną pilność dla zespołów IT. Planowanie aktualizacji systemów operacyjnych na dużą skalę oznacza:

  1. Koordynowanie harmonogramów w wielu działach i biurach.
  2. Minimalizowanie przestojów, aby uniknąć zakłóceń w krytycznych operacjach biznesowych.
  3. Zapewnienie kompatybilności ze starszymi aplikacjami i sprzętem.
  4. Obsługa wsparcia dla użytkowników końcowych, komunikacji i rozwiązywania problemów w trakcie i po aktualizacjach.

Te zadania mogą szybko się kumulować, zwiększając obciążenie menedżerów IT i obciążając już ograniczone zasoby.


Wyzwanie związane z czasem

Aktualizacja w normalnych godzinach pracy rzadko wchodzi w grę. Przerywanie aktywnych sesji pracowników może prowadzić do utraty produktywności, niezapisanej pracy i frustracji. W rezultacie większość zespołów IT jest zmuszona planować aktualizacje poza godzinami pracy — późnymi wieczorami, w weekendy lub święta — co jeszcze bardziej utrudnia zarządzanie zasobami.


Ryzyko opóźnienia

Organizacje, które nie przeprowadzą aktualizacji, stają w obliczu krytycznych zagrożeń, w tym:

  1. Luki w zabezpieczeniach: Bez regularnych aktualizacji systemy działające na Windows 10 staną się łatwym celem dla złośliwego oprogramowania, ransomware i zaawansowanych cyberataków.
  2. Problemy z zgodnością: Używanie przestarzałych systemów może prowadzić do niezgodności z przepisami, zwłaszcza w branżach objętych ścisłymi zasadami ochrony danych.
  3. Ograniczone wsparcie: Dostawcy sprzętu i oprogramowania stopniowo zaprzestaną oferowania kompatybilności z Windows 10, pozostawiając dział IT z mniejszą liczbą opcji wsparcia.
  4. Przestoje operacyjne: W przypadku naruszenia bezpieczeństwa lub awarii systemu, koszty odzyskiwania i przestoje mogą znacznie przewyższyć wysiłek związany z zaplanowaniem aktualizacji już dziś.

Automatyzacja aktualizacji za pomocą PowerShell

Na szczęście automatyzacja może pomóc zmniejszyć wiele ręcznych obciążeń. Używając skryptów PowerShell, menedżerowie IT mogą standaryzować i planować aktualizacje z Windows 10 do 11 na wielu maszynach — oszczędzając czas i redukując błędy.

Poniżej znajduje się sekcja z przykładowym skryptem PowerShell, którego możesz użyć do wykonania aktualizacji w swoim środowisku:


# 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."



Dalsze kroki

Przejście z Windows 10 na Windows 11 to nie tylko konieczność techniczna — to strategiczny krok w zabezpieczaniu bezpieczeństwa i efektywności Twojej organizacji. Przygotowując się już teraz, menedżerowie IT mogą zminimalizować zakłócenia i zapewnić płynną migrację przed upływem terminu wsparcia.


Czy wiesz, że możesz wdrożyć ten skrypt masowo za pomocą Monitic RMM i ukończyć migrację do Windows 11? https://www.monitic.com

Latest Blog

Monitic provides end-to-end tracking, analysis and data protection services for your company.