![]() |
Разбивка диска на T-13, T-12 установки WindowsXP - Критическая ошибка 8004100a WMI
Всем здравствуйте.
Мучаюсь с проблемой разбиения жесткого диска на T-13, T-12 установки WindowsXP (сетевая установка через RIS/WDS) Кто-нибудь пробовал запускать vbs-скрипт из CMDLINES.TXT, который обращается к WMI через GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2") ??? При попытке обратиться к любому из классов "Win32_" или "CIM_", например простейший запрос из VBS objService.ExecQuery("SELECT * FROM Win32_DiskDrive ) Почему-то выдает: Критическая ошибка 8004100a swbemobjectset Может где-то какие-нить права нужно выставить, или что-то запустить, или дополнительно установить на T-13, T-12 установки WindowsXP, чтобы нормально заработал WMI? Причем интересно, что "SELECT * FROM __namespace" - работает на ура (т.е. минимальные операции выборок WMI можно производить) Скрипт проверен, в обычной среде (на установленной операционке WindowsXP) работает без проблем, все отрабатывает четко, а вот во время установки на T-13, T-12 не хочет... :( Поиски информации особо никчему не привели, нашел на нескольких форумах, где вскользь об этом говорится, но что-конкретно сделать - ничего не сказано: http://us.generation-nt.com/answer/w...12.html?page=2 http://programming.itags.org/active-server-page/128945/ Отсюда вопрос, возможно ли вообще на T13, T12 обратиться к WMI и если нет, то тогда при помощи чего автоматизрованно можно разбить жесткие диски на паритиции, передвинуть буквы устройств? diskpart умеет разбивать, передвигать, но для того, чтобы знать что куда двигать и что на компьютере из накопителей есть - нужна логика управления. Т.е. если на компьютере 1 диск-драйв и на этом диске 1 партиция - сделать так-то. Если два и более диск-драйва - сделать так-то. |
Цитата:
Цитата:
|
Передвинуть буквы CD-ROM(ов) из пула свободных букв (Z,X,Y,W,V)
Если на компьютере 1 диск-драйв и на этом драйве 1 системная праймари-партиция и есть неразмеченное место - создать Extended партицию. Если на компьютере 1 диск-драйв и на этом драйве 1 системная праймари-партиция и нет неразмеченного места - ничего не делать Если два и более диск-драйва - выбрать неразмеченный дискдрайв где нет системной праймари-партиция, создать на выбранном драйве партицию. Выборка диск-драйвов производится среди подключеных через IDE/SCSI, т.е. отметаем флэш-диски, HDD-USB Через WMI - все это реализовать можно без проблем (уже есть написанный скрипт), только вот силы как я понял частично потрачены зря.... :( Через FSO.Drives количество физических диск-драйвов не увидеть, там только вернутся все буквы логических устройств, да и отмести HDD-USB - не получится (определяется как обычный HDD) Ладно если нельзя на T12,T13 обратитья к WMI, тогда будем через vbs запускать diskpart и анализировать StdOUT, если конечно других вариантов больше нет... Или есть? Пробую сейчас анализировать из текстового файла StdOUT diskpart'а, возникли 2 проблемы: 1) не могу поймать перевод строки, чтоб загнать в массив: alines = Split(alines, vbNewline) Пробовал: VbCrLf, VbCr, chr(13) - не сплитится и все-тут. 2) На T12,T13 - вместо русских букв вылезают кракозябры (как я понял кодировка CP866), как анализировать эти кракозябры?? Быть может тогда имеет смысл использовать diskpart от английской винды, но заработает ли он в русской устанавливаемой WindowsXP ? |
1. на Win2003 vbCrLf, на WinXP (RUS) vbLf
2. на WinXP (RUS) работает следующий вызов (на Win2003 не работает): Код:
CMD /C "chcp 1251|(echo list disk|diskpart)" |
>>на WinXP (RUS) vbLf
С этим разделителем split работает. Как я понял - это аналог chr(10) >>CMD /C "chcp 1251|(echo list disk|diskpart)" Что-то не прокатывает chcp 1251 - все-равно кракозябры выводятся в коносоль... :( |
Цитата:
- Вами заявлена категория WSH, для которой "родной" является ANSI, поэтому для консольных команд потребуется перекодировка 866->1251, предложенный вызов diskpart делает это ДО передачи в скрипт, пример на VBS: Код:
Dim oShell, oExec, sInput |
Время: 23:58. |
Время: 23:58.
© OSzone.net 2001-