WMIC - как использовать метод Lenovo SetBiosSetting - PullRequest
0 голосов
/ 26 января 2012

У меня есть проблема, вызывающая метод SetBiosSetting с использованием WMIC (а также C #)

wmic / namespace: \ root \ wmi path Lenovo_SetBiosSetting call SetBiosSetting "SecurityChip, Active"

wmic / namespace: \ root \ wmi path Lenovo_SetBiosНастройка вызова SetBiosSetting SecurityChip, Active

wmic / namespace: \ root \ wmi path. Lenovo_SetBiosSetting call SetBiosSetting ("SecurityChip, Active")

, что дает «Неверное количество параметров». ошибка, но почему?

Руководство по развертыванию Lenovo BIOS: http://download.lenovo.com/ibmdl/pub/pc/pccbbs/thinkcentre_pdf/hrdeploy_en.pdf

Есть идеи? Я не могу использовать VBS или PowerShell ...

Спасибо, Martin

Ответы [ 2 ]

1 голос
/ 11 декабря 2012

Попробуйте это в C #:

        ManagementScope scope = new ManagementScope(@"\\.\root\wmi");


        //
        // Make change(s)
        //
        SelectQuery queryRead = new SelectQuery("SELECT * from Lenovo_SetBiosSetting");
        using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, queryRead))
        {
            using (ManagementObjectCollection queryCollection = searcher.Get())
            {
                foreach (ManagementObject queryItem in queryCollection)
                {
                    ManagementBaseObject inParams = queryItem.GetMethodParameters("SetBiosSetting");
                    inParams["parameter"] = "WakeOnLAN,Disable";

                    ManagementBaseObject outParams = queryItem.InvokeMethod("SetBiosSetting", inParams, null);
                    string result = outParams["return"] as string; // "Success"
                }
            }
        }


        //
        // Commit to BIOS
        //
        queryRead = new SelectQuery("SELECT * from Lenovo_SaveBiosSettings");
        using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, queryRead))
        {
            using (ManagementObjectCollection queryCollection = searcher.Get())
            {
                foreach (ManagementObject queryItem in queryCollection)
                {
                    ManagementBaseObject inParams = queryItem.GetMethodParameters("SaveBiosSettings");
                    inParams["parameter"] = "";

                    ManagementBaseObject outParams = queryItem.InvokeMethod("SaveBiosSettings", inParams, null);
                    string result = outParams["return"] as string; // "Success"
                }
            }
        }

PowerShell для этого:

(gwmi -class Lenovo_SetBiosSetting -namespace root\wmi).SetBiosSetting("WakeOnLAN,Disable")
0 голосов
/ 01 августа 2013

Я пришел к этому сообщению, пытаясь найти способ использовать WMIC для получения всех объектов класса Lenovo_BiosSetting.Ваш синтаксис сделал меня на правильном пути.Мне пришлось изменить ваш WMIC-запрос на это:

wmic /namespace:\\root\wmi path Lenovo_BiosSetting get

(обратите внимание на двойную косую черту)

...