Existuje několik tříd rozhraní WMI a skriptovací objekt pro parsování nebo převod CIM datetime formátu. Další příklady najdete na webu TechNet ScriptCenter na https://www.microsoft.com/technet.
Příklady skriptů uvedené v tomto tématu získávají data pouze z místního počítače. Další informace o tom, jak pomocí skriptu získat data ze vzdálených počítačů, naleznete v tématu Připojení k rozhraní WMI na vzdáleném počítači.
Spuštění skriptu
Následující postup popisuje, jak spustit skript.
Zkopírujte kód a uložte ho do souboru s příponou .vbs, například název_souboru.vbs. Ujistěte se, že textový editor nepřidá do souboru .txt příponu.
Otevřete okno příkazového řádku a přejděte do adresáře, do kterého jste soubor uložili.
Na příkazovém řádku zadejte cscript filename.vbs.
Pokud nemáte přístup k protokolu událostí, zkontrolujte, jestli používáte příkazový řádek se zvýšenými oprávněními. Některé protokoly událostí, jako je protokol událostí zabezpečení, můžou být chráněné řízením uživatelských přístupů (UAC).
Poznámka
Ve výchozím nastavení cscript zobrazí výstup skriptu v okně příkazového řádku. Vzhledem k tomu, že skripty rozhraní WMI můžou vytvářet velké objemy výstupu, můžete chtít výstup přesměrovat na soubor. Na příkazovém řádku zadejte cscript filename.vbs > outfile.txt a přesměrujte výstup skriptu název_souboru.vbs do outfile.txt.
Následující tabulka uvádí příklady skriptů, které lze použít k získání různých typů dat z místního počítače.
Jak můžu...
Třídy nebo metody služby WMI
... chcete převést data rozhraní WMI na standardní data a časy?
Pomocí objektu SWbemDateTime tyto objekty převeďte na běžná data a časy.
VB
Set dtmInstallDate = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objOS = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each strOS in objOS
dtmInstallDate.Value = strOS.InstallDate
Wscript.Echo dtmInstallDate.GetVarDate
Next
... určete název časového pásma, ve kterém je počítač spuštěný?
Použijte třídu Win32_TimeZone a zkontrolujte hodnotu vlastnosti Description.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_TimeZone")
For Each objItem in colItems
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Daylight Name: " & objItem.DaylightName
Wscript.Echo "Standard Name: " & objItem.StandardName
Wscript.Echo
Next
PowerShell
$Computer = "."
$timezone = Get-WMIObject -class Win32_TimeZone -ComputerName $computer
<# Display details #>
if ($computer -eq ".") {$computer = Hostname}
"Time zone information on computer `"{0}`"" -f $computer
"Time Zone Description : {0}" -f $timezone.Description
"Daylight Name : {0}" -f $timezone.DaylightName
"Standard Name : {0}" -f $timezone.StandardName
... ujistěte se, že "10/02/2000" je interpretováno jako 2. října 2000, nikoli "10 února 2000"?
Spravujte kalendářní data ve formátu CIMDATETIME a použijte metody SWbemDateTime, například GetVarDate k převodu na ně a z FILETIME nebo VT_Date formátů. Vzhledem k tomu, že formát DATETIME je nezávislý na národním prostředí, můžete napsat skript, který běží na libovolném počítači. Pomocí objektu SWbemDateTime tyto objekty převeďte na běžná data a časy. Další informace o převodu kalendářních dat a časů najdete v formátu data a času.
... chcete převést hodnotu datetime rozhraní WMI na hodnotu DateTime rozhraní .NET?
Ručně parsujte řetězec a potom vložte načtené hodnoty do objektu DateTime objektu.