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.
Zakończenie wsparcia dla Windows 10 stwarza wyraźną pilność dla zespołów IT. Planowanie aktualizacji systemów operacyjnych na dużą skalę oznacza:
Te zadania mogą szybko się kumulować, zwiększając obciążenie menedżerów IT i obciążając już ograniczone zasoby.
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.
Organizacje, które nie przeprowadzą aktualizacji, stają w obliczu krytycznych zagrożeń, w tym:
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."
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