«Ошибка загрузки провайдера» в процессе установки

Я выполняю два сценария Powershell в процессе установки из настольного приложения под Windows 10 IoT Enterprise.

%WINDIR%\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Bypass -File ".\KeyboardFilter.ps1"
%WINDIR%\System32\WindowsPowerShell\v1.0\PowerShell.exe -ExecutionPolicy Bypass -File ".\ShellLauncher.ps1"

Но выполнение сценариев Powershell не удается. Я получаю следующие ошибки:

Get-WMIObject : Provider load failure
At C:\Program Files\Application\KeyboardFilter.ps1:31 char:19
+ ... $predefined = Get-WMIObject -class WEKF_PredefinedKey @CommonParams |
+                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand


Write-Error : A positional parameter cannot be found that accepts argument 'is'.
At C:\Program Files\Application\KeyboardFilter.ps1:41 char:9
+         Write-Error $Id is not a valid predefined key
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Write-Error], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.WriteErrorCommand


enable-windowsoptionalfeature : An attempt was made to load a program with an incorrect format.
At C:\Program Files\Application\ShellLauncher.ps1:4 char:1
+ enable-windowsoptionalfeature -online -featureName Client-EmbeddedShe ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Enable-WindowsOptionalFeature], COMException
    + FullyQualifiedErrorId : Microsoft.Dism.Commands.EnableWindowsOptionalFeatureCommand

Процесс установки начинается с прав администратора. Первый сценарий добавляет комбинации клавиш в фильтр клавиатуры (функция Windows 10 IoT).

Вторые сценарии включают и настраивают средство запуска оболочки (также функцию Windows 10 IoT).

KeyboardFilter.ps1:

 param (
     [String] $ComputerName
 )

 $CommonParams = @{"namespace"="root\standardcimv2\embedded"}
 $CommonParams += $PSBoundParameters

 function Enable-Predefined-Key($Id) {   
     $predefined = Get-WMIObject -class WEKF_PredefinedKey @CommonParams |
         where {
             $_.Id -eq "$Id"
         };

     if ($predefined) {
         $predefined.Enabled = 1;
         $predefined.Put() | Out-Null;
         Write-Host Enabled $Id
     } else {
         Write-Error $Id is not a valid predefined key
     }
 }

Если я выполняю сценарии Powershell в пакетном файле или на консоли Powershell, все работает нормально. Я также пытался выполнить сценарии Powershell во время процесса установки с Powershell x86 и x64, в обоих случаях одинаковые ошибки.

Любые подсказки, советы или решение этой проблемы?


person Niklas    schedule 16.03.2018    source источник
comment
Первая ошибка звучит так, будто класс не существует. Вторая ошибка — это прямая синтаксическая ошибка. Вам нужны кавычки вокруг строки, которую вы пытаетесь написать.   -  person EBGreen    schedule 16.03.2018
comment
@EBGreen, первая ошибка: я проверил, класс существует в соответствующем пространстве имен. Если я запускаю сценарии Powershell в командной строке (не во время процесса установки), все работает нормально. Вторая ошибка: Да, это была синтаксическая ошибка.   -  person Niklas    schedule 19.03.2018
comment
Так что похоже, что сама установка может возиться с этим классом. Возможно, попробуйте изменить время, когда вы пытаетесь сделать этот бит, по отношению к тому, когда на самом деле происходит установка.   -  person EBGreen    schedule 19.03.2018
comment
@EBGreen, у меня была такая же идея. В настоящее время процесс установки ничего не делает, кроме выполнения сценариев PowerShell, и я все еще получаю те же ошибки... Возможно, мне следует поискать другой способ настроить функции Win10 IoT и прекратить попытки с Power Shell.   -  person Niklas    schedule 19.03.2018
comment
Может быть что-то, что вы можете сделать через dism.   -  person EBGreen    schedule 19.03.2018