Condividi tramite


Linee guida per la migrazione di OneNote per Windows 10

Importante

OneNote per Windows 10 raggiungerà la fine del supporto a ottobre 2025. I clienti aziendali devono passare da OneNote per Windows 10 a OneNote in Windows, disponibile da Microsoft Store e con un abbonamento a Microsoft 365. OneNote in Windows offre nuove funzionalità e aggiornamenti e consente di personalizzare le impostazioni utente tramite Criteri di gruppo.

Questo articolo fornisce indicazioni per la migrazione dell'organizzazione da OneNote per Windows 10 a OneNote per Windows. Include istruzioni per identificare gli utenti, personalizzare gli script di migrazione e garantire l'integrità dei dati durante tutto il processo. Sono disponibili i passaggi di risoluzione dei problemi e le procedure consigliate per ridurre al minimo le interruzioni e proteggere i dati degli utenti durante la migrazione.

Identificazione degli utenti in OneNote per Windows 10:

Per identificare utenti o dispositivi nell'organizzazione usando OneNote per Windows 10 tramite Microsoft Intune, seguire questa procedura per eseguire un report:

  • In Intune passare a: Tutte le app di servizi>| Monitorare>le>app individuate e quindi cercare "Office.OneNote".
  • Cercare la versione dell'applicazione a partire da 16001.xxxxx.xxxxx.x, per identificare OneNote per gli utenti Windows 10. La versione più recente è 16001.14326.22094.0

    Nota

    Lo script di migrazione di esempio funziona solo con OneNote per i dispositivi Windows 10 nella versione16001.14326.22094.0

Personalizzazione di script di esempio

Per garantire una migrazione senza problemi a OneNote per Windows, le organizzazioni devono personalizzare lo script di esempio seguente per completare queste funzioni:

  • Installa OneNote in Windows nei dispositivi utente. Per altre informazioni, vedere Guida alla distribuzione per OneNote

  • Aggiornamenti OneNote per Windows 10 alla build più recente per incorporare funzionalità importanti e impedire la perdita di dati durante la migrazione di note non sincronizzate.

    Nota

    Questo script non aggiorna OneNote per Windows 10 dispositivi non presenti nella versione 16001.14326.22094. Gli amministratori IT devono aggiornare questi dispositivi in base ai criteri dell'organizzazione.

  • Termina tutti i processi di OneNote per Windows 10.

  • Esegue il backup di eventuali notebook non sincronizzati nella cartella di backup dell'utente usando il onenote-uwp://backup: comando .

    • I backup vengono archiviati in C:\temp\OneNoteMigration, tuttavia, è possibile modificare il percorso in base alle esigenze dell'organizzazione.
    • Ogni backup crea una cartella corrispondente per ogni notebook con sezioni non sincronizzate all'interno di questo percorso.
  • Analizzare per convalidare l'esito UWPBackUpStatus.json positivo del backup.

    • La disinstallazione con un backup non riuscito può causare la perdita di dati.

      Nota

      Per eseguire il backup, è necessario installare OneNote per Windows e OneNote per Windows 10 deve essere aggiornato alla versione 16001.14326.22094 o successiva.

  • Disinstalla OneNote per Windows 10.

    • Assicurarsi che OneNote per Windows 10 venga disinstallato su base utente e non su base di dispositivo. Questo processo consente di attenuare gli scenari in cui i dispositivi condivisi hanno rimosso note non sincronizzate per tutti gli account.

Importante

Prima di usare lo script di esempio, è necessario personalizzarlo in base ai requisiti di distribuzione e migrazione specifici dell'organizzazione.

#############################################
######   OneNote for Windows 10  ############
######   External Migration Script v5  ######
#############################################

## Creates backupFolder and writes log from script to UWPMigrationResult.log File and Console ##

function writeLogsToFileAndConsole {
    Param ([string]$logstring)
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $logstringWithTimestamp = "[$timestamp] $logstring"
    $backupFolder = [System.Environment]::GetFolderPath('LocalApplicationData') + "\Microsoft\OneNote\16.0\Backup"
    $outputFile = $backupFolder + "\UWPMigrationResult.log"

    if (-not (Test-Path $backupFolder)) {
        New-Item -Path $backupFolder -ItemType Directory
    }

    if (-not (Test-Path $outputFile)) {
        New-Item -Path $outputFile -ItemType File
    }

    Add-content $outputFile -value "$logstringWithTimestamp"
    Write-Host "$logstringWithTimestamp"
}

## Checks if OneNote UWP is installed and if app data exists, writes version to log file and console ##

function checkOneNoteUWPInstall {
    $folderPath = "$env:LOCALAPPDATA\Packages\Microsoft.Office.OneNote_8wekyb3d8bbwe\LocalState\AppData\Local\OneNote"
    $uwpApp = Get-AppxPackage | Where-Object {$_.Name -eq "Microsoft.Office.OneNote"}
    if ($null -ne $uwpApp) {
    $uwpVersion = $uwpApp.Version
    $uwpVersionObject = [System.Version]$uwpVersion
        writeLogsToFileAndConsole "UWP OneNote app version: $uwpVersion"
    } else {
        writeLogsToFileAndConsole "OneNote UWP App is not installed"
    exit
    }

    if (Test-Path $folderPath) {
        Write-Host "AppData folder detected"
    } else {
        ($null -ne $uwpApp) 
        $uwpApp | Remove-AppxPackage
        writeLogsToFileAndConsole "AppData folder does not exist and OneNote UWP will now be uninstalled"
    exit
    }
}

## Checks if OneNote Win32 is installed by checking the existence of the executable file and checks the version ##

function checkOneNoteWin32Install {
    $oneNotePath = Join-Path $env:ProgramFiles "Microsoft Office\root\Office16\ONENOTE.EXE"
    $registryPath = "HKLM:\SOFTWARE\Microsoft\Office\ClickToRun\Configuration"
    $versionValueName = "ClientVersionToReport"
    $registry = Get-ItemProperty -Path $registryPath
    
    if (Test-Path $oneNotePath) {
        if ($registry.PSObject.Properties[$versionValueName]) {
            $versionValue = $registry.$versionValueName
            writeLogsToFileAndConsole "OneNote Win32 Version Value: $versionValue is installed at path $oneNotePath"   
    } else {
        writeLogsToFileAndConsole "OneNote Win32 is not installed"
        exit
    }
 }   

## Checks for backup folder path
  
    $registryPath = "HKCU:\SOFTWARE\Microsoft\Office\16.0\OneNote\Options\Paths"
    $backupValueName = "BackupFolderPath"
    if (Test-Path $registryPath) {
        $registry = Get-ItemProperty -Path $registryPath
        if ($registry.PSObject.Properties[$backupValueName]) {
            $backupValue = $registry.$backupValueName
            writeLogsToFileAndConsole "OneNote Win32 Backup Path Value: $backupValue"
        }
    }
}

## Updates OneNote for Windows 10 to the latest version available ##

function updateUWPVersion {
    $uwpApp = Get-AppxPackage | Where-Object {$_.Name -eq "Microsoft.Office.OneNote"}
    if ($null -ne $uwpApp) {
        $uwpVersion = $uwpApp.Version
        $uwpVersionObject = [System.Version]$uwpVersion

        $updatedVersion = "16001.14326.22008.0"
        $updatedVersionObject = [System.Version]$updatedVersion

        $unsupportedVersion = "16001.14327.10000.0"
        $unsupportedVersionObject = [System.Version]$unsupportedVersion

    if ($uwpVersionObject -ge $unsupportedVersionObject)
        {
        writeLogsToFileAndConsole "Unsupported version of OneNote UWP app. Please check the Microsoft Store for updates"
            exit
    }

    if ($uwpVersionObject -lt $updatedVersionObject)
        {
            writeLogsToFileAndConsole "You must upgrade OneNote UWP to a version higher than 16.0.14326.21802. Please check the Microsoft Store"
            exit
        }
    else
        {
            writeLogsToFileAndConsole "OneNote UWP will backup and uninstall"
        }
    }
    else
    {
        writeLogsToFileAndConsole "No OneNote UWP detected therefore no need for migration"
        exit
    }
}
## Terminates the OneNote for Windows 10 app before executing the rest of the migration script ##

function killProcess {
    if (Get-Process -Name "OneNoteIm" -ErrorAction SilentlyContinue)
    {
        try
        {
            $uwpProcess = Get-Process -Name "OneNoteIm"
            Stop-Process -Id $uwpProcess.Id -Force
            Start-Sleep -Seconds 10
        }
        catch
        {
            writeLogsToFileAndConsole "An error occurred when killing the current OneNote UWP process: $($_.Exception.GetType().FullName)"
            writeLogsToFileAndConsole "$($_.Exception.Message)"
            exit
        }

        writeLogsToFileAndConsole "OneNote UWP process killed"
    }
}

function launchBackUp {
    try
    {
        Start-Process "onenote-uwp://backup:"
        Start-Sleep -Seconds 60
        writeLogsToFileAndConsole "OneNote UWP backup initiated"
    }
    catch
    {
        writeLogsToFileAndConsole "An error occurred when starting the backup: $($_.Exception.GetType().FullName)"
        writeLogsToFileAndConsole "$($_.Exception.Message)"
        exit
    }

    writeLogsToFileAndConsole "OneNote UWP backup in progress"
}

## Parses the results in the json files to validate that the backup was successful ##

 function parseJson {
    try
    {
        $localAppDataPath = [System.Environment]::GetFolderPath('LocalApplicationData')
        $jsonPath = "$localAppDataPath\Packages\Microsoft.Office.OneNote_8wekyb3d8bbwe\LocalState\AppData\Local\OneNote\16.0\UWPBackUpStatus.json"
        if(!(test-path $jsonPath)){
            writeLogsToFileAndConsole "Backup Json file path is not valid"
            exit
        }
        $backupJsonFileContent = Get-Content -Path $jsonPath -Raw | ConvertFrom-Json
        $status = $backupJsonFileContent."UWP Backup Status"
        if ($status -eq "Completed") {
            $jsonPath2 = "$localAppDataPath\Packages\Microsoft.Office.OneNote_8wekyb3d8bbwe\LocalState\AppData\Local\OneNote\16.0\UWPSyncStatus.json"
            if(test-path $jsonPath2)
            {
            $syncStatusJsonContent = Get-Content -Raw -Path $jsonPath2
            $syncStatusJsonObject = COnvertFrom-Json $syncStatusJsonContent
            foreach ($key in $syncStatusJsonObject.PSObject.Properties)
            {
                $value = $syncStatusJsonObject.$($key.Name)
                if ($value.StartsWith("Contains pending outbounding changes: true,"))
                {
                    if ($backupJsonFileContent."Number of sections Backed up" -eq 0)
                    {
                        writeLogsToFileAndConsole "No error occurred when backing up but outbounding changes were not backed up successfully"
                        exit
                    }
                    else
                    {
                        break
                    }
                }
            }
        }

            writeLogsToFileAndConsole "OneNote UWP backup is completed and status is saved"
        }
        elseif ($status -eq "")
        {
            writeLogsToFileAndConsole "$status"
            writeLogsToFileAndConsole "No error occurred but backup did not finish. We cannot continue migration. Consider increasing the Start-Sleep time in line 130 and rerun the script"
            exit
        }
        else
        {
            writeLogsToFileAndConsole "No error occurred but backup status is $status. We cannot continue migration. Consider increasing the Start-Sleep time in line 130 and rerun the script"
            exit
        }
    }
    catch
    {
        writeLogsToFileAndConsole "An error occurred when finishing the backup: $($_.Exception.GetType().FullName)"
        writeLogsToFileAndConsole "$($_.Exception.Message)"
        exit
    }
}

## Copies the backup files to the local app data folder ##

 function moveBackup {
    try
    {
        $localAppDataPath = [System.Environment]::GetFolderPath('LocalApplicationData')
        $sourcePath = "$localAppDataPath\Packages\Microsoft.Office.OneNote_8wekyb3d8bbwe\LocalState\AppData\Local\OneNote\16.0\BackUp\"
        $destinationPath = [System.Environment]::GetFolderPath('LocalApplicationData') + "\Microsoft\OneNote\16.0\Backup\"

        Copy-Item -Path $sourcePath\* -Destination $destinationPath -Recurse -Force

        $sourcePath = "$localAppDataPath\Packages\Microsoft.Office.OneNote_8wekyb3d8bbwe\LocalState\AppData\Local\OneNote\16.0"
        $fileExtensions = "*.json", "*.txt"
        foreach ($fileExtension in $fileExtensions)
        {
            $files = Get-ChildItem -Path $sourcePath -Filter $fileExtension
            foreach ($file in $files) {
                Copy-Item -Path $file.FullName -Destination $destinationPath -Force
            }
        }
    }
    catch
    {
        writeLogsToFileAndConsole "An error occurred when moving the backup files: $($_.Exception.GetType().FullName)"
        writeLogsToFileAndConsole "$($_.Exception.Message)"
        exit
    }

    writeLogsToFileAndConsole "Backup files copied successfully from $sourcePath to $destinationPath"
 }

function uninstallUWP {
    $uwpApp = Get-AppxPackage | Where-Object {$_.Name -eq "Microsoft.Office.OneNote"}
    if ($null -ne $uwpApp) {
        $uwpApp | Remove-AppxPackage
        writeLogsToFileAndConsole "OneNote UWP version uninstalled"
    }
}

function MainRoutine {
    checkOneNoteWin32Install
    checkOneNoteUWPInstall
    updateUWPVersion
    launchBackUp
    killProcess
    parseJson
    moveBackup
    uninstallUWP
}

## Executes the main routine ##

MainRoutine

Accesso alle note di cui è stata eseguita la migrazione

Dopo la migrazione, gli utenti possono recuperare le note:

  1. Apertura della nuova applicazione OneNote in Windows .
  2. Accesso al proprio account.
  3. Apertura dei notebook.

Se mancano note, controllare la cartella di backup creata nei passaggi precedenti.

Per esaminare i backup tramite OneNote in Windows:

  • Passare a File -> Apri backup:> passare al percorso del file di backup.

Risoluzione dei problemi

  • Esaminare i UWPBackupStatus.json file e UWPSyncStatus.json nella cartella di backup dell'utente per informazioni dettagliate sugli stati di backup e sincronizzazione.

  • Per gli errori rilevati durante la migrazione, fare riferimento al file di log che si trova nel backup generato in precedenza (passaggio 1.d).

Se il onenote-uwp://backup: comando ha esito negativo:

  • Assicurarsi che OneNote per Windows 10'app sia l'app predefinita collegata al onenote-uwp protocollo.
  • Consultare l'articolo di supporto pertinente per assicurarsi che l'allegato del protocollo a OneNote sia corretto per Windows 10.

Attenzione

Prestare attenzione quando si usano i comandi trovati online. Testare sempre i comandi in un ambiente controllato prima di distribuirli a livello di organizzazione per evitare conseguenze impreviste, ad esempio quelle risultanti dal comando Remove-AppxPackage.

Per ulteriori informazioni o richieste, contattare supporto tecnico Microsoft.