Delen via


WMI-taken: Bureaubladbeheer

WMI-taken voor bureaubladbeheer kunnen controle uitoefenen en gegevens verkrijgen van een extern bureaublad of een lokale computer. U kunt bijvoorbeeld bepalen of de schermbeveiliging op een lokale computer een wachtwoord vereist. WMI biedt u ook de mogelijkheid om een externe computer af te sluiten. Zie het TechNet ScriptCenter op https://www.microsoft.com/technetvoor andere voorbeelden.

De scriptvoorbeelden die in dit onderwerp worden weergegeven, verkrijgen alleen gegevens van de lokale computer. Zie Verbinding maken met WMI op een externe computer op een externe computervoor meer informatie over het gebruik van het script om gegevens op te halen van externe computers.

In de volgende procedure wordt beschreven hoe u een script uitvoert.

Een script uitvoeren

  1. Kopieer de code en sla deze op in een bestand met de extensie .vbs, zoals bestandsnaam.vbs. Zorg ervoor dat uw teksteditor geen .txt extensie aan het bestand toevoegt.
  2. Open een opdrachtpromptvenster en navigeer naar de map waarin u het bestand hebt opgeslagen.
  3. Typ cscript bestandsnaam.vbs bij de opdrachtprompt.
  4. Als u geen toegang hebt tot een gebeurtenislogboek, controleert u of u wordt uitgevoerd vanaf een opdrachtprompt met verhoogde bevoegdheid. Sommige gebeurtenislogboeken, zoals het beveiligingslogboek, kunnen worden beveiligd door UAC (User Access Controls).

Notitie

In cscript wordt standaard de uitvoer van een script weergegeven in het opdrachtpromptvenster. Omdat WMI-scripts grote hoeveelheden uitvoer kunnen produceren, kunt u de uitvoer omleiden naar een bestand. Typ cscript bestandsnaam.vbs > outfile.txt bij de opdrachtprompt om de uitvoer van de bestandsnaam.vbs script om te leiden naar outfile.txt.

De volgende tabel bevat scriptvoorbeelden die kunnen worden gebruikt voor het verkrijgen van verschillende typen gegevens van de lokale computer.

Hoe kan ik... WMI-klassen of -methoden
... bepalen of een externe computer is opgestart in de veilige modus met de netwerkstatus? Gebruik de klasse Win32_ComputerSystem en controleer de waarde van de eigenschap PrimaryOwnerName.
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
PowerShell
$colSettings = Get-WmiObject -Class Win32_ComputerSystem
foreach ($objComputer in $colSettings)
{
    "System Name: " + $objComputer.Name
    "Registered owner: " + $objComputer.PrimaryOwnerName
}
... bepalen of een computerbeveiliging een wachtwoord vereist?

Gebruik de klasse Win32_Desktop en controleer de waarde van de eigenschap 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
PowerShell
$Computer = "."
$Desktops = Get-WMIObject -class Win32_Desktop -ComputerName $computer
"{0} desktops found as follows" -f $desktops.count
foreach ($desktop in $desktops) {
     "Desktop      : {0}"  -f $Desktop.Name
     "Screen Saver : {0}"  -f $desktop.ScreensaverExecutable
     "Secure       : {0} " -f $desktop.ScreenSaverSecure
     ""
}
... controleert u of een computerscherm is ingesteld voor 800 pixels bij 600 pixels?

Gebruik de klasse Win32_DesktopMonitor en controleer de waarden van de eigenschappen ScreenHeight en 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 = hostnaam 

<# Bureaubladdetails weergeven #> 'Er zijn als volgt {0} Bureaubladen op {1}:' -f $desktops. Count, $hostname "" $i=1 # count of desktops on this system

foreach ($desktop in $desktops) { "Desktop {0}: {1}" -f $i++, $Desktop.Caption "Screen Height : {0}" -f $desktop.ScreenHeight "Screen Width : {0}" -f $desktop.ScreenWidth "" }

... bepalen hoe lang een computer actief is?

Gebruik de Win32_OperatingSystem-klasse en de eigenschap LastBootUpTime. Trek die waarde af van de huidige tijd om de uptime van het systeem op te halen.

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
              
              functie WMIDateStringToDate($Bootup) { [System.Management.ManagementDateTimeconverter]::ToDateTime($Bootup) } 

<# Hoofdscript #> $Computer = "." # pas indien nodig $computers = Get-WMIObject -class Win32_OperatingSystem -computer $computer

foreach ($system in $computers) { $Bootup = $system.LastBootUpTime $LastBootUpTime = WMIDateStringToDate($Bootup) $now = Get-Date $Uptime = $now-$lastBootUpTime "System Up for: {0}" -f $UpTime }

... een externe computer opnieuw opstarten of afsluiten?

Gebruik de Win32_OperatingSystem-klasse en de methode Win32Shut down. U moet de RemoteShutdown- bevoegdheid opnemen wanneer u verbinding maakt met WMI. Zie Bevoegde bewerkingen uitvoeren met VBScript-voor meer informatie. In tegenstelling tot de methode Shutdown op Win32_OperatingSystemkunt u met de methode Win32Shutdown vlaggen instellen om het afsluitgedrag te beheren.

VB
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
PowerShell
strComputer = "atl-dc-01"
$colOperatingSystem = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $strComputer -Namespace "wmi\cimv2"
foreach ($objOperatingSystem in $colOperatingSystem)
{
    [void]$objOperatingSystem.Shutdown()
}
... bepalen welke toepassingen automatisch worden uitgevoerd wanneer ik Windows start?

Gebruik de klasse Win32_StartupCommand.

VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colStartupCommands = objWMIService.ExecQuery _
    ("Select * from Win32_StartupCommand")
For Each objStartupCommand in colStartupCommands
    Wscript.Echo "Command: " & objStartupCommand.Command & VBNewLine _
    & "Description: " & objStartupCommand.Description & VBNewLine _
    & "Location: " & objStartupCommand.Location & VBNewLine _
    & "Name: " & objStartupCommand.Name & VBNewLine _
    & "SettingID: " & objStartupCommand.SettingID & VBNewLine _
    & "User: " & objStartupCommand.User
Next
PowerShell
$strComputer = "."
$colItems = Get-WmiObject -Class Win32_StartupCommand -ComputerName $strComputer
foreach ($objStartupCommand in $colItems) 
{ 
    "Command: " + $objStartupCommand.Command
    "Description: " + $objStartupCommand.Description 
    "Location: " + $objStartupCommand.Location 
    "Name: " + $objStartupCommand.Name 
    "SettingID: " + $objStartupCommand.SettingID 
    "User: " + $objStartupCommand.User
}

WMI-taken voor scripts en toepassingen

WMI C++-toepassingsvoorbeelden

TechNet ScriptCenter