Contents of this directory is archived and no longer updated.

В своём предыдущем блоге я писал заметку про то, как можно случайно удалить классы WMI – PowerShell - убийца WMI классов? И недавно узнал, как можно восстановить эту функциональность обратно. Сами Win32 классы находятся в библиотеке CIMWIN32.MOF, которая и повреждается при удалении классов. Чтобы вернуть эти классы – достаточно перекомпилировать эту библиотеку:

C:\Windows\System32\wbem\MOFComp CIMWIN32.MOF
PS C:\Windows\System32> gwmi win32_share

Name                                    Path                                    Description
----                                    ----                                    -----------
ADMIN$                                  C:\Windows                              Remote Admin
C$                                      C:\                                     Default share
D$                                      D:\                                     Default share
IPC$                                                                            Remote IPC
P$                                      P:\                                     Default share
print$                                  C:\Windows\system32\spool\drivers       Printer Drivers
Work                                    D:\Users\vpodans\Work
Z$                                      Z:\                                     Default share
_Shared Documents                       D:\Users\_Shared Documents


PS C:\Windows\System32> [wmiclass]'win32_share'


   NameSpace: ROOT\cimv2

Name                                Methods              Properties
----                                -------              ----------
Win32_Share                         {Create, SetShare... {AccessMask, AllowMaximum, Caption, Description...}


PS C:\Windows\System32> ([wmiclass]'win32_share').delete()
PS C:\Windows\System32> gwmi win32_share
Get-WmiObject : Invalid class
At line:1 char:5
+ gwmi <<<<  win32_share
    + CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], ManagementException
    + FullyQualifiedErrorId : GetWMIManagementException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

PS C:\Windows\System32> cd wbem
PS C:\Windows\System32\wbem> MOFComp CIMWIN32.MOF
Microsoft (R) MOF Compiler Version 6.0.6000.16386
Copyright (c) Microsoft Corp. 1997-2006. All rights reserved.
Parsing MOF file: CIMWIN32.MOF
MOF file has been successfully parsed
Storing data in the repository...
Done!
PS C:\Windows\System32\wbem> gwmi win32_share

Name                                    Path                                    Description
----                                    ----                                    -----------
ADMIN$                                  C:\Windows                              Remote Admin
C$                                      C:\                                     Default share
D$                                      D:\                                     Default share
IPC$                                                                            Remote IPC
P$                                      P:\                                     Default share
print$                                  C:\Windows\system32\spool\drivers       Printer Drivers
Work                                    D:\Users\vpodans\Work
Z$                                      Z:\                                     Default share
_Shared Documents                       D:\Users\_Shared Documents


PS C:\Windows\System32\wbem>

Вот так я сначала показал, как можно убить класс WMI и восстановить его обратно очень простым способом.


Share this article:

Comments:

Kazun

А почему не происходи автоматическое восстановление потерянных классов,ведь в ключе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\Autorecover MOFs содержится %windir%\system32\wbem\cimwin32.mof %windir%\system32\wbem\ncprov.mof %windir%\system32\wbem\wmipcima.mof и т.д

Vadims Podāns

А разве они должны сами восстанавливаться?

Kazun

Судя по этой ссылки должны: http://msdn.microsoft.com/en-us/library/aa392749(VS.85).aspx

Vadims Podāns

я не знаю, что они хотели этим сказать, но autorecovery не работает. Как-то так.

Comments are closed.