Istnieje kilka klas WMI i obiekt skryptowy do analizowania lub konwertowania format daty/godziny modelu CIM. Inne przykłady można znaleźć w witrynie TechNet ScriptCenter pod adresem https://www.microsoft.com/technet.
Przykłady skryptów pokazane w tym temacie uzyskują dane tylko z komputera lokalnego. Aby uzyskać więcej informacji o sposobie uzyskiwania danych z komputerów zdalnych za pomocą skryptu, zobacz Connecting to WMI on a Remote Computer.
Aby uruchomić skrypt
Poniższa procedura opisuje sposób uruchamiania skryptu.
Skopiuj kod i zapisz go w pliku z rozszerzeniem vbs, takim jak nazwa pliku.vbs. Upewnij się, że edytor tekstów nie dodaje rozszerzenia .txt do pliku.
Otwórz okno wiersza polecenia i przejdź do katalogu, w którym zapisano plik.
Wpisz cscript nazwa pliku.vbs w wierszu polecenia.
Jeśli nie możesz uzyskać dostępu do dziennika zdarzeń, sprawdź, czy korzystasz z wiersza polecenia z podwyższonym poziomem uprawnień. Niektóre dzienniki zdarzeń, takie jak dziennik zdarzeń zabezpieczeń, mogą być chronione przez kontrolę dostępu użytkowników (UAC).
Nuta
Domyślnie skrypt cscript wyświetla dane wyjściowe skryptu w oknie wiersza polecenia. Ponieważ skrypty usługi WMI mogą generować duże ilości danych wyjściowych, może być konieczne przekierowanie danych wyjściowych do pliku. Wpisz cscript filename.vbs > outfile.txt w wierszu polecenia, aby przekierować dane wyjściowe pliku pliku.vbs skryptu, aby outfile.txt.
W poniższej tabeli wymieniono przykłady skryptów, których można użyć do uzyskania różnych typów danych z komputera lokalnego.
Jak mogę...
Klasy lub metody WMI
... przekonwertować daty usługi WMI na standardowe daty i godziny?
Użyj obiektu SWbemDateTime, aby przekonwertować je na regularne daty i godziny.
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
... określić nazwę strefy czasowej, w której jest uruchomiony komputer?
Użyj klasy Win32_TimeZone i sprawdź wartość właściwości 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
... czy "10/02/2000" jest interpretowany jako 2 października 2000 r., a nie "10 lutego, 2000"?
Zarządzaj datami w formacie CIMDATETIME i użyj metod SWbemDateTime, takich jak GetVarDate przekonwertować na FILETIME lub VT_Date formaty. Ponieważ format DATETIME jest niezależny od ustawień regionalnych, możesz napisać skrypt uruchamiany na dowolnej maszynie. Użyj obiektu SWbemDateTime, aby przekonwertować je na regularne daty i godziny. Aby uzyskać więcej informacji na temat konwertowania dat i godzin, zobacz Format daty i godziny.
... przekonwertować wartość daty/godziny usługi WMI na wartość data/godzina platformy .NET?
Ręcznie przeanalizuj ciąg, a następnie umieść pobrane wartości w obiekcie DateTime.