Command Palette

Search for a command to run...

Upgrade dari Windows 10 ke Windows 11 menggunakan PowerShell
Upgrade dari Windows 10 ke Windows 11 menggunakan PowerShell10.04.2025

Pada 13 Oktober 2025, Microsoft secara resmi akan mengakhiri dukungan untuk Windows 10. Bagi administrator IT dan manajer sistem, tenggat waktu ini lebih dari sekadar tanggal di kalender—ini menandai pergeseran signifikan dalam tanggung jawab operasional dan manajemen risiko.

Meskipun upgrade ke Windows 11 membawa peningkatan keamanan, peningkatan kinerja, dan pengalaman pengguna yang lebih modern, transisi ini tidak lepas dari tantangan. Bagi organisasi yang masih sangat bergantung pada perangkat Windows 10, bulan-bulan mendatang akan sangat krusial.


Beban Kerja untuk Manajer IT

Berakhirnya dukungan Windows 10 menciptakan urgensi yang jelas bagi tim IT. Merencanakan upgrade sistem operasi skala besar berarti:

  1. Mengkoordinasikan jadwal di berbagai departemen dan kantor.
  2. Meminimalkan waktu henti untuk menghindari gangguan dalam operasi bisnis yang krusial.
  3. Memastikan kompatibilitas dengan aplikasi dan perangkat keras lama.
  4. Menangani dukungan pengguna akhir, komunikasi, dan pemecahan masalah selama dan setelah upgrade.

Tugas-tugas ini dapat dengan cepat berlipat ganda, menciptakan beban kerja yang meningkat bagi manajer IT dan meregangkan sumber daya yang sudah terbatas.


Tantangan Penjadwalan

Melakukan upgrade selama jam kerja normal jarang menjadi pilihan. Menginterupsi sesi aktif karyawan dapat menyebabkan hilangnya produktivitas, pekerjaan yang tidak tersimpan, dan frustrasi. Akibatnya, sebagian besar tim IT terpaksa menjadwalkan upgrade di luar jam kerja—larut malam, akhir pekan, atau hari libur—membuat manajemen sumber daya menjadi lebih sulit.


Risiko Penundaan

Organisasi yang gagal melakukan upgrade menghadapi risiko kritis, termasuk:

  1. Kerentanan keamanan: Tanpa pembaruan rutin, sistem yang menjalankan Windows 10 akan menjadi target mudah bagi malware, ransomware, dan serangan siber canggih.
  2. Masalah kepatuhan: Mengoperasikan sistem yang usang dapat menyebabkan ketidakpatuhan terhadap peraturan, terutama di industri yang terikat oleh aturan perlindungan data yang ketat.
  3. Dukungan terbatas: Vendor perangkat keras dan penyedia perangkat lunak secara bertahap akan berhenti menawarkan kompatibilitas Windows 10, meninggalkan IT dengan lebih sedikit pilihan dukungan.
  4. Waktu henti operasional: Jika terjadi pelanggaran keamanan atau kegagalan sistem, biaya pemulihan dan waktu henti dapat jauh melebihi upaya perencanaan upgrade hari ini.

Mengotomatiskan Upgrade dengan PowerShell

Untungnya, otomatisasi dapat membantu mengurangi banyak beban manual. Dengan menggunakan skrip PowerShell, manajer IT dapat menstandardisasi dan menjadwalkan upgrade Windows 10 ke 11 di berbagai mesin—menghemat waktu dan mengurangi kesalahan.

Di bawah ini adalah bagian placeholder untuk skrip PowerShell yang dapat Anda gunakan untuk menjalankan upgrade di lingkungan Anda:


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



Langkah Selanjutnya

Transisi dari Windows 10 ke Windows 11 bukan hanya kebutuhan teknis—ini adalah langkah strategis dalam menjaga keamanan dan efisiensi organisasi Anda. Dengan mempersiapkan diri sekarang, manajer IT dapat meminimalkan gangguan dan memastikan migrasi yang lancar sebelum tenggat waktu dukungan tiba.


Tahukah Anda bahwa Anda dapat menerapkan skrip ini secara massal dengan Monitic RMM dan menyelesaikan migrasi Windows 11 Anda? https://www.monitic.com