Поделиться через


Руководство по миграции OneNote для Windows 10

Важно!

Поддержка OneNote для Windows 10 будет завершена в октябре 2025 г. Корпоративным клиентам следует перейти с OneNote для Windows 10 на OneNote в Windows, которая доступна в Microsoft Store и имеет подписку На Microsoft 365. OneNote в Windows предлагает новые функции и обновления, а также позволяет настраивать параметры пользователя с помощью групповая политика.

В этой статье содержатся рекомендации по миграции организации из OneNote для Windows 10 в OneNote для Windows. Он содержит инструкции по идентификации пользователей, настройке скриптов миграции и обеспечению целостности данных на протяжении всего процесса. Вы найдете шаги по устранению неполадок и рекомендации, которые помогут свести к минимуму нарушения работы и защитить данные пользователей во время миграции.

Определение пользователей в OneNote для Windows 10:

Чтобы определить пользователей или устройства в организации с помощью OneNote для Windows 10 через Microsoft Intune, выполните следующие действия, чтобы запустить отчет:

  • В Intune перейдите к: Все приложения служб>| > Мониторинг >обнаруженных приложений монитора, а затем выполните поиск по запросу "Office.OneNote".
  • Найдите версию приложения, начиная с 16001.xxxxx.xxxxx.x, чтобы определить OneNote для Windows 10 пользователей. Последняя версия : 16001.14326.22094.0

    Примечание.

    Пример скрипта миграции работает только с OneNote для Windows 10 устройств в версии16001.14326.22094.0

Настройка примера скрипта

Перед выполнением примера скрипта установите OneNote в Windows на пользовательских устройствах, если приложение не установлено. Дополнительные сведения см. в статье Руководство по развертыванию для OneNote.

Чтобы обеспечить бесперебойную миграцию в OneNote для Windows, организациям необходимо настроить следующий пример сценария, чтобы выполнить следующие действия в порядке:

  1. Проверьте, установлен ли OneNote для Windows 10 и существует ли путь к папке AppData для приложения (что указывает, открывал ли пользователь приложение ранее), чтобы проверить необходимость миграции.
  2. Проверьте, установлен ли OneNote для Windows, проверив, существует ли исполняемый файл на устройстве.
  3. Проверьте версию OneNote на наличие Windows 10, чтобы убедиться, что в ней установлена последняя версия с важными функциями, чтобы предотвратить потерю данных во время миграции.

Примечание.

Этот скрипт не работает на устройствах с OneNote для Windows 10 версий ниже 16001.14326.22094. ИТ-администраторы должны обновить эти устройства в соответствии с политикой своей организации.

  1. Завершите все процессы OneNote для Windows 10.
  2. Создайте резервную копию всех несинхронизованных разделов в папку песочницы с помощью onenote-uwp://backup: команды .
  3. Храните резервные копии в песочнице в:
    $localAppDataPath\Packages\Microsoft.Office.OneNote_8wekyb3d8bbwe\AppData\Local\OneNote\16.0\BackUp\.
  4. Убедитесь, что резервные копии только разделов с несинхронизованным содержимым создаются и организованы в папках, где каждая папка соответствует записной книжке.
  5. Выполните синтаксический UWPBackUpStatus.json анализ, чтобы убедиться, что резервное копирование прошло успешно.

Предупреждение

Удаление с помощью неудачной резервной копии может привести к потере данных.

  1. Переместите файлы резервных копий в расположение за пределами песочницы:
    $localAppDataPath\Packages\Microsoft.Office.OneNote_8wekyb3d8bbwe\
    так как путь к песочнице будет удален после удаления приложения OneNote для Windows 10.
  2. Удалите OneNote для Windows 10.
  3. Убедитесь, что OneNote для Windows 10 удаляется для каждого пользователя, а не для каждого устройства.
    Этот процесс помогает смягчить сценарии, в которых общие устройства удаляют несинхронизованные заметки для всех учетных записей.

Важно!

Перед использованием примера скрипта необходимо настроить его в соответствии с конкретными требованиями к развертыванию и миграции вашей организации.

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

## Optional: Helper function to write logs 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"
}

## Check if OneNote for Windows 10 is installed and if the AppData path exists ##
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 "OneNote UWP app version: $uwpVersion"
    }
    else {
        writeLogsToFileAndConsole "OneNote UWP App is not installed"
        exit
    }

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

## Check if OneNote for Windows is installed by checking the existence of the executable file ##
function checkOneNoteWin32Install {
    $oneNotePath = Join-Path $env:ProgramFiles "Microsoft Office\root\Office16\ONENOTE.EXE"
    
    if (Test-Path $oneNotePath) {
        writeLogsToFileAndConsole "OneNote Win32 is installed"   
    } else {
        writeLogsToFileAndConsole "OneNote Win32 is not installed"
        exit
    }
 }

## Check version of the user's OneNote for Windows 10 app ##
function checkUWPVersion {
    $uwpApp = Get-AppxPackage | Where-Object {$_.Name -eq "Microsoft.Office.OneNote"}
    if ($null -ne $uwpApp)
    {
        $uwpVersion = $uwpApp.Version
        $uwpVersionObject = [System.Version]$uwpVersion

        $updatedVersion = "16001.14326.22094.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
    }
}

## Terminate 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"
    }
}

## Run the protocol to back up unsynced sections into the sandbox path ##
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"
}

## Parse 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
    }
}

## Copy the backup files to a directory outside of the sandbox path ##
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"
 }

## Uninstall the OneNote for Windows 10 app ##
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
    checkUWPVersion
    killProcess
    launchBackUp
    parseJson
    moveBackup
    uninstallUWP
}

## Executes the main routine ##
MainRoutine

Доступ к перенесенным заметкам

После миграции пользователи могут получать свои заметки, выполнив следующие действия:

  1. Открытие нового приложения OneNote для Windows .
  2. Вход в свою учетную запись.
  3. Открытие записных книжек.

Если какие-либо заметки отсутствуют, проверка папку резервного копирования, созданную на предыдущих шагах.

Чтобы просмотреть резервные копии с помощью OneNote в Windows, выполните приведенные далее действия.

  • Перейдите к файлу —> Открыть резервные копии.> Перейдите к пути к файлу резервной копии.

Устранение неполадок

  • Просмотрите UWPBackupStatus.json файлы и UWPSyncStatus.json в папке резервного копирования пользователя, чтобы получить подробные сведения о состоянии резервного копирования и синхронизации.

  • Сведения об ошибках, возникших во время миграции, см. в файле журнала, расположенном в созданной ранее резервной копии (шаг 1.d).

Если команда завершается ошибкой onenote-uwp://backup: :

  • Убедитесь, что приложение OneNote для Windows 10 является приложением по умолчанию, связанным с протоколомonenote-uwp.
  • Обратитесь к соответствующей статье поддержки, чтобы обеспечить правильное вложение протокола в OneNote для Windows 10.

Предостережение

Будьте осторожны при использовании команд, найденных в Интернете. Всегда тестируйте команды в управляемой среде перед их развертыванием в масштабах всей организации, чтобы избежать непредвиденных последствий, таких как те, которые возникают в результате выполнения команды Remove-AppxPackage.

Чтобы получить дополнительную помощь или запросы, обратитесь к служба поддержки Майкрософт.