Не получается сохранить строку в XML

Для начала структура файлов

root\en-US\test.psd1
root\test.ps1
root\test.psd1

root\en-US\test.psd1

ConvertFrom-StringData -StringData @'
CleanUpTaskToast = Cleaning up unused Windows files and updates starts in a minute
'@

root\test.ps1

Clear-Host

Remove-Module -Name test -Force -ErrorAction Ignore
Import-Module -Name .\test.psm1 -PassThru -Force

Import-LocalizedData -BindingVariable Global:Localization -FileName test

CreateCleanUpTask

root\test.psd1

function CreateCleanUpTask
{
    function xml
    {
        $app = "{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\cleanmgr.exe"

        [Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]
        $Template = [Windows.UI.Notifications.ToastTemplateType]::ToastImageAndText01
        [xml]$ToastTemplate = ([Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent($Template).GetXml())

        [xml]$ToastTemplate = @"
<toast launch="app-defined-string">
    <visual>
        <binding template="ToastGeneric">
            <text>$($Localization.CleanUpTaskToast)</text>
        </binding>
    </visual>
</toast>
"@

        $ToastXml = New-Object -TypeName Windows.Data.Xml.Dom.XmlDocument
        $ToastXml.LoadXml($ToastTemplate.OuterXml)

        [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($app).Show($ToastXml)
    }

    $test = (Get-Command -Name xml).ScriptBlock

    $Action = New-ScheduledTaskAction -Execute powershell.exe -Argument "-noexit $test"
    $Trigger = New-ScheduledTaskTrigger -Daily -DaysInterval 90 -At 9am
    $Settings = New-ScheduledTaskSettingsSet -Compatibility Win8 -StartWhenAvailable
    $Principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME -RunLevel Highest
    $Parameters = @{
        "TaskName"      = "test"
        "Principal"     = $Principal
        "Action"        = $Action
        "Settings"      = $Settings
        "Trigger"       = $Trigger
    }
    Register-ScheduledTask @Parameters -Force
}

Проблема заключается в том, что в переменную $Localization.CleanUpTaskToast не получается загрузить локализованную строку из файла. Соответственно, при запуске задачи во всплывающем тосте отсутствует предложение. Я понимаю, что можно создать изначально файл для последующего запуска Планировщиком, но хочу принципиально самодостаточную задачу. Вся проблема в том, что задача не может создаться, если использовать here-string @" "@. Но именно такие кавычки нужны для правильной загрузки переменной. В общем, как сделать так, чтобы локализация сохранялась в xml-файл?


Ответы (0 шт):