Zadania WMI do zarządzania pulpitem mogą wywierać kontrolę i uzyskiwać dane z pulpitu zdalnego lub komputera lokalnego. Można na przykład określić, czy wygaszacz ekranu na komputerze lokalnym wymaga hasła. Usługa WMI umożliwia również wyłączenie komputera zdalnego. 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.
Poniższa procedura opisuje sposób uruchamiania skryptu.
Aby uruchomić 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
... czy komputer zdalny został uruchomiony w trybie awaryjnym ze stanem sieć?
Użyj klasy Win32_Desktop i sprawdź wartość właściwości ScreenSaverSecure.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Desktop")
For Each objItem in colItems
Wscript.Echo "Screen Saver Secure: " & objItem.ScreenSaverSecure
Next
... czy na ekranie komputera ustawiono 800 pikseli na 600 pikseli?
Użyj klasy Win32_DesktopMonitor i sprawdź wartości właściwości ScreenHeight i ScreenWidth.
VB
strComputer = "."
Set objWMIService = GetObject(_
"winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DesktopMonitor")
For Each objItem in colItems
Wscript.Echo "Screen Height: " & objItem.ScreenHeight
Wscript.Echo "Screen Width: " & objItem.ScreenWidth
Next
PowerShell
<# Get desktop information #>
$computer = "." $desktops = Get-WmiObject -Class Win32_DesktopMonitor $hostname = nazwa hosta
<# Wyświetl szczegóły pulpitu #> "Na {1} są {0} pulpity w następujący sposób:" -f $desktops. Count, $hostname "" $i=1 # liczba komputerów stacjonarnych w tym systemie
strComputer = "atl-dc-01"
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Shutdown(1)
Next