|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как выполнить WMIC CHKDSK с параметрами?
Добрый день.
Как известно доступ к серверу WMI можно получить и через консоль CMD, введя следующее : wmic PATH Win32_LogicalDisk WHERE (DeviceID='I:') call chkdsk после чего получить ответ : Выполнение (\\PROGRAMMATOR\root\cimv2:Win32_LogicalDisk.Devic eID="I:")->chkdsk() Успешный вызов метода. Параметры вывода: instance of __PARAMETERS { ReturnValue = 0; }; однако этого для запуска проверки диска недостаточно, нужно указать параметры : - FixErrors – Определяет процесс проверки. Если TRUE, то ошибки фиксируются. По умолчанию используется FALSE. - VigorousIndexCheck - Если TRUE, проверка записей индекса должна быть выполнено. По умолчанию TRUE. - SkipFolderCycle – параметр принимает логические значения, если значение TRUE (по умолчанию), то произойдет пропуск проверки циклов. - ForceDismount – Если значение TRUE, то при необходимости предварительное отключение тома. Значение по умолчанию FALSE. - RecoverBadSector – Если TRUE, то произойдет поиск поврежденных секторов и восстановление информации. По умолчанию FALSE. - OKToRunAtBootUp - Если TRUE, то процесс проверки произойдет после перезагрузки системы. По умолчанию FALSE. Вопрос : как конкретно указать параметры? Если к примеру указать так : wmic PATH Win32_LogicalDisk WHERE (DeviceID='I:') call chkdsk(FixErrors) оно пишет : ОШИБКА: Код = 0x80020005 Описание = Несовпадение типов. Услуга = Dispatch |
#2
|
||||
|
||||
Здесь наблюдается попытка вызова из-под консоли метода chkdisk класса Win32_LogicalDisk с параметром FixErrors[in], но, если судить по сведениям из справочника Брайана Книттеля "Win7 and Vista Guide to Scripting, Automation, and Command Line Tools", такое возможно лишь из тельца vbs-скрипта, типа как
Код:
set svcs = GetObject("winmgmts:\\PROGRAMMATOR\root\cimv2") set drive = svcs.instanceOf("Win32_LogicalDisk") drive.DeviceID = "I:" if drive.DriveType = 3 then drive.chkdisk(FixErrors[True]) Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
то есть получается что из WMIС ничего запустить НЕЛЬЗЯ?
только считать какие то данные чего то из параметров ОС. Я все правильно понял? а то в микрошафте все таки пишут другое, при этом не приводя пример синтаксиса команды в полном, рабочем виде или из WMIC нельзя но все таки если на ДЕЛФИ накропать код доступа к серверу WMI то там все таки получится? мне вообще WMIC в общем то не нужен, просто хотел проверить работоспособность метода до того как в ДЕЛФИ код писать Последний раз редактировалось Pcrepair, 09.08.2016 в 17:38. |
#4
|
||||
|
||||
В принципе - можно, но зачем?, напоминает "радости" общения с DOS-ом середины 90-х годов, когда все манипуляции с файлодисками ручками делать приходилось, а затем появились комоболчки Нортон сиречь Волков... Наверное лучше такое с WMI посредством сценариев на VBScript вытворять, например с помощью моникёра как в примере, или в мелкомяконьком редакторе Scriptomatic, будет и проще и быстрее
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
Зачем? ответ простой
мне нужно написать на ДЕЛФИ запуск проверки указанного лог. диска с ключами F R при перезагрузке РС. все это из службы по событию, определяемому логикой работы службы. поэтому методы через "запуск Программ" не пойдут, нет рабочего стола (хотя можно наверно организовать автовход в профиль админа - но это крайние меры) сейчас определяю подходящий вариант : WMI Registy Run file.cmd типа "echo y|chkdsk c: /f /r" что то можешь подсказать? |
#6
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |