WMI-Aufgaben für die Desktopverwaltung können die Steuerung steuern und Daten von einem Remotedesktop oder einem lokalen Computer abrufen. Beispielsweise können Sie bestimmen, ob der Bildschirmschoner auf einem lokalen Computer ein Kennwort erfordert. WMI bietet Ihnen auch die Möglichkeit, einen Remotecomputer herunterzufahren. Weitere Beispiele finden Sie im TechNet ScriptCenter unter https://www.microsoft.com/technet .
Die in diesem Thema gezeigten Skriptbeispiele rufen Daten nur vom lokalen Computer ab. Weitere Informationen zur Verwendung des Skripts zum Abrufen von Daten von Remotecomputern finden Sie unter Herstellen einer Verbindung mit WMI auf einem Remotecomputer.
Im folgenden Verfahren wird beschrieben, wie Ein Skript ausgeführt wird.
So führen Sie ein Skript aus
Kopieren Sie den Code, und speichern Sie ihn in einer Datei mit der Erweiterung .vbs, z. B.filename.vbs. Stellen Sie sicher, dass Ihr Text-Editor der Datei keine .txt Erweiterung hinzufüg.
Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu dem Verzeichnis, in dem Sie die Datei gespeichert haben.
Geben Sie an der Eingabeaufforderung cscript filename.vbs ein.
Wenn Sie nicht auf ein Ereignisprotokoll zugreifen können, überprüfen Sie, ob Sie über eine Eingabeaufforderung mit erhöhten Rechten ausführen. Einige Ereignisprotokolle, z. B. das Sicherheitsereignisprotokoll, können durch Benutzerzugriffssteuerungen (User Access Controls, UAC) geschützt werden.
Hinweis
Standardmäßig zeigt cscript die Ausgabe eines Skripts im Eingabeaufforderungsfenster an. Da WMI-Skripts große Mengen von Ausgaben erzeugen können, sollten Sie die Ausgabe an eine Datei umleiten. Geben Sie cscript filename.vbs > outfile.txt an der Eingabeaufforderung ein, um die Ausgabe des filename.vbs Skripts anoutfile.txt umzuleiten.
In der folgenden Tabelle sind Skriptbeispiele aufgeführt, die zum Abrufen verschiedener Datentypen vom lokalen Computer verwendet werden können.
Vorgehensweisen
WMI-Klassen oder -Methoden
... Ermitteln Sie, ob ein Remotecomputer im Tresor-Modus mit dem Status Netzwerk gestartet wurde?
Verwenden Sie die Win32_ComputerSystem-Klasse, und überprüfen Sie den Wert der PrimaryOwnerName-Eigenschaft.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery ("Select * from Win32_ComputerSystem")
For Each objComputer in colSettings
Wscript.Echo "System Name: " & objComputer.Name
Wscript.Echo "Registered owner: " & objComputer.PrimaryOwnerName
Next
... ermitteln, ob ein Bildschirmschoner für einen Computer ein Kennwort erfordert?
Verwenden Sie die Win32_Desktop-Klasse, und überprüfen Sie den Wert der ScreenSaverSecure-Eigenschaft.
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
... Überprüfen Sie, ob ein Computerbildschirm auf 800 x 600 Pixel festgelegt wurde?
Verwenden Sie die Win32_DesktopMonitor-Klasse, und überprüfen Sie die Werte der Eigenschaften ScreenHeight und 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 = hostname
<# Desktopdetails anzeigen #> " Es gibt {0} Desktops auf wie {1} folgt: " -f $desktops. Anzahl, $hostname " " $i=1 Anzahl der Desktops auf diesem System
... bestimmen, wie lange ein Computer ausgeführt wurde?
Verwenden Sie die Win32_OperatingSystem-Klasse und die LastBootUpTime-Eigenschaft. Subtrahieren Sie diesen Wert von der aktuellen Zeit, um die Systembetriebszeit zu erhalten.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOS in colOperatingSystems
dtmBootup = objOS.LastBootUpTime
dtmLastBootUpTime = WMIDateStringToDate(dtmBootup)
dtmSystemUptime = DateDiff("h", dtmLastBootUpTime, Now)
Wscript.Echo dtmSystemUptime
Next
Function WMIDateStringToDate(dtmBootup)
WMIDateStringToDate = CDate(Mid(dtmBootup, 5, 2) & "/" & _
Mid(dtmBootup, 7, 2) & "/" & Left(dtmBootup, 4) & " " & Mid (dtmBootup, 9, 2) & ":" & _
Mid(dtmBootup, 11, 2) & ":" & Mid(dtmBootup, 13, 2))
End Function
PowerShell
function WMIDateStringToDate($Bootup) {
[System.Management.ManagementDateTimeconverter]::ToDateTime($Bootup)
}
<# Main script #>
$Computer = "." # adjust as needed
$computers = Get-WMIObject -class Win32_OperatingSystem -computer $computer
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