none
Win32_Volume Provider failure RRS feed

  • Вопрос

  • Привет. 

    OS: windows 2008 standard x64 SP2

    PowerShell: v2.0

    При выполнение в х86 среде PowerShell такого кода Get-WMIObject Win32_Volume -filter "DriveType=3" 

    вылетает ошибка:

    Get-WmiObject : Provider failure 
    At line:1 char:14
    + Get-WMIObject <<<<  Win32_Volume -filter "DriveType=3"
        + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
        + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

    Но. Если запускать в среде х64 PowerShell, то все работает нормально. Необходимо добиться работаспособновти в х86.

    Подскажите решение данной проблемы.

    21 августа 2016 г. 15:16

Ответы

  • я про версии грил про то что х86 и х64 wmi находятся в разных папках:

    если запускаем cmd в х64 то путь до 32х битного вми будет %systemroot%\SysWOW64\wbem

    попробуйте провести регистрацию\перерегистрацию дллок или ребилд используя х32 консоль (в таком случае используйте "нормальный путь" %systemroot%\System32\wbem)

    30 августа 2016 г. 9:17

Все ответы

  • Вариантов много

    1 вариант искать альтернативу которая работает

    2 использовать тулзы которые работают


    The opinion expressed by me is not an official position of Microsoft

    21 августа 2016 г. 20:39
    Модератор
  • Проверил на Windows Server 2008 - работает. Что у вас локально.

    Судя по ошибке вы скорее всего копируете код откуда-то. Попробуйте набрать руками.


    Сазонов Илья

    https://isazonov.wordpress.com/

    22 августа 2016 г. 4:26
    Модератор
  • Проверил на Windows Server 2008 - работает. Что у вас локально.

    Судя по ошибке вы скорее всего копируете код откуда-то. Попробуйте набрать руками.


    Сазонов Илья

    https://isazonov.wordpress.com/

    Уточните пожалуйста вы проверяли на х86 поше?

    У меня к сожалению нет 2008 для проверки


    The opinion expressed by me is not an official position of Microsoft


    22 августа 2016 г. 7:46
    Модератор
  • Да на x86.

    Только сервер 2008 R2 оказался.


    Сазонов Илья

    https://isazonov.wordpress.com/

    22 августа 2016 г. 8:13
    Модератор
  • Вариантов много

    1 вариант искать альтернативу которая работает

    2 использовать тулзы которые работают

    The opinion expressed by me is not an official position of Microsoft

    Благодарю за мысль, можно конечно переделать с помощью win32_logicaldisk, но хотелось бы разобраться в причине. Т.к. эта проблема только на 1 сервера, а скрипт работает по многим серверам. Есть брат близнец этого сервака, на нем отрабатывается без проблем.

    Интересно, почему больной сервер не видит провидер Win32_Volume.

    Хотя вот такой командой, он его выдает:

    Get-WmiObject -List Win32_Volume
    
    
       NameSpace: ROOT\cimv2
    
    Name                                Methods              Properties                                                                    
    ----                                -------              ----------                                                                    
    Win32_Volume                        {SetPowerState, R... {Access, Automount, Availability, BlockSize...}


    22 августа 2016 г. 10:08
  • Проверил на Windows Server 2008 - работает. Что у вас локально.

    Судя по ошибке вы скорее всего копируете код откуда-то. Попробуйте набрать руками.

    Сазонов Илья

    В ручную та же проблема, тут даже просто get-wmiobject win32_volume не пашет.
    22 августа 2016 г. 10:10
  • Попробуйте WMI пересобрать https://support.software.dell.com/vworkspace/kb/88861

    Сазонов Илья

    https://isazonov.wordpress.com/

    22 августа 2016 г. 10:23
    Модератор
  • Попробуйте WMI пересобрать

    Сазонов Илья

    Пробывал и пересобрать и чистый, даже с рабочего близнеца подкидывал. Не помогло.
    22 августа 2016 г. 11:08
  • Скорее всего какая-то dll не зарегистрирована. Посмотрите http://stackoverflow.com/questions/563150/how-can-i-resolve-a-provider-load-failure-for-wmi-requests

    Сазонов Илья

    https://isazonov.wordpress.com/

    22 августа 2016 г. 11:14
    Модератор
  • Скорее всего какая-то dll не зарегистрирована. Посмотрите

    Сазонов Илья

    То же пробывал. В утилите wbemtest класс Win32_Volume отдает данные корректно (так же корректно работает и в пошике х64).

    Кстати, пробывал на всякий переустановить сам Powershell. 

    22 августа 2016 г. 11:53
  • Там разные точки входа для x64 и 32. Т.е. банально могли какой-то софт поставить и попортить загрузку провайдера.

    Попробуйте отловить ошибки утилитой wbemtest https://blogs.infosupport.com/win32_network-adapter-provider-load-failure/


    Сазонов Илья

    https://isazonov.wordpress.com/

    22 августа 2016 г. 12:03
    Модератор
  • Там разные точки входа для x64 и 32. Т.е. банально могли какой-то софт поставить и попортить загрузку провайдера.

    Попробуйте отловить ошибки утилитой wbemtest

    Сазонов Илья

    Wbemtest'ом отловить ошибку не вышло.

    23 августа 2016 г. 5:33
  • Здравствуйте,

    - Проверка целостности системных файлов находит какие-то несоответствия?

    sfc /scannow
    - В системных событиях логируются какие-то предупреждения/ошибки на момент воспроизведения проблемы?


    Best Regards, Andrei ...
    MCP

    • Изменено SQxModerator 23 августа 2016 г. 6:50 добавлено
    23 августа 2016 г. 6:49
    Модератор
  • Здравствуйте,

    - Проверка целостности системных файлов находит какие-то несоответствия?

    sfc /scannow
    - В системных событиях логируются какие-то предупреждения/ошибки на момент воспроизведения проблемы?


    Best Regards, Andrei ...
    MCP

    Приветствую. 

    sfc /scannow ошибок не выдал. В событиях (на момент воиспроизведения) ошибки не возникают.

    23 августа 2016 г. 8:27
  • Можно включить логирование https://blogs.technet.microsoft.com/askperf/2008/03/04/wmi-debug-logging/ 

    Сазонов Илья

    https://isazonov.wordpress.com/

    23 августа 2016 г. 10:03
    Модератор
  • Можно включить логирование  

    Сазонов Илья

    Все что смог выловить это вот: 

    ProviderInfo for GroupOperationId = 264343; Operation = Provider::CreateInstanceEnum - Win32_Volume; ProviderName = MSVDS__PROVIDER; ProviderGuid = {890CB943-D715-401b-98B1-CF82DCF36D7C}; Path = %systemroot%\system32\wbem\vdswmi.dll

    26 августа 2016 г. 8:58
  • del

    извиняюсь, наврал..

    установил чистую  2008 х64 сп2, доустановил 1й повершел - все работает в тч и в х86

    а например у вас 

    wmic volume

    отрабатывает?

    • Изменено Svolotch 26 августа 2016 г. 10:07
    26 августа 2016 г. 9:14
  • а вы как ребилд wmi делали? в х86 консоли?


    • Изменено Svolotch 26 августа 2016 г. 10:25
    26 августа 2016 г. 10:23
  • del

    извиняюсь, наврал..

    установил чистую  2008 х64 сп2, доустановил 1й повершел - все работает в тч и в х86

    а например у вас 

    wmic volume

    отрабатывает?

    а вы как ребилд wmi делали? в х86 консоли?


    wmic volume в cmd x86 

    ERROR:
    Code = 0x80041004
    Description = Provider failure
    Facility = WMI

    В cmd x64 отрабатывается корректно.

    Вот на счет х86 консоли забыл, делал в стандартной х64. Примеры ребилда wmi брал отсюда social.technet.microsoft.com/Forums/ru-RU/5df95797-14b1-4e6b-82ff-a810d7d7eea7



    30 августа 2016 г. 7:09
  • я про версии грил про то что х86 и х64 wmi находятся в разных папках:

    если запускаем cmd в х64 то путь до 32х битного вми будет %systemroot%\SysWOW64\wbem

    попробуйте провести регистрацию\перерегистрацию дллок или ребилд используя х32 консоль (в таком случае используйте "нормальный путь" %systemroot%\System32\wbem)

    30 августа 2016 г. 9:17
  • я про версии грил про то что х86 и х64 wmi находятся в разных папках:

    если запускаем cmd в х64 то путь до 32х битного вми будет %systemroot%\SysWOW64\wbem

    попробуйте провести регистрацию\перерегистрацию дллок или ребилд используя х32 консоль (в таком случае используйте "нормальный путь" %systemroot%\System32\wbem)


    Хорошо, попробую, но только на выходных.
    30 августа 2016 г. 11:16