Le attività WMI per la gestione desktop possono esercitare il controllo e ottenere i dati da un desktop remoto o da un computer locale. Ad esempio, è possibile determinare se lo screenaver in un computer locale richiede una password. WMI offre anche la possibilità di arrestare un computer remoto. Per altri esempi, vedere TechNet ScriptCenter in https://www.microsoft.com/technet.
Gli esempi di script illustrati in questo argomento ottengono dati solo dal computer locale. Per altre informazioni su come usare lo script per ottenere dati da computer remoti, vedere Connessione a WMI in un computer remoto.
La procedura seguente descrive come eseguire uno script.
Per eseguire uno script
Copiare il codice e salvarlo in un file con estensione vbs, ad esempio filename.vbs. Assicurarsi che l'editor di testo non aggiunga un'estensione .txt al file.
Aprire una finestra del prompt dei comandi e passare alla directory in cui è stato salvato il file.
Digitare cscript filename.vbs al prompt dei comandi.
Se non è possibile accedere a un registro eventi, verificare se si esegue da un prompt dei comandi con privilegi elevati. Alcuni registri eventi, ad esempio il registro eventi di sicurezza, possono essere protetti da controlli di accesso utente.Some Event Log, such as the Security Event Log, may be protected by User Access Controls (UAC).
Nota
Per impostazione predefinita, cscript visualizza l'output di uno script nella finestra del prompt dei comandi. Poiché gli script WMI possono produrre grandi quantità di output, è possibile reindirizzare l'output a un file. Digitare > outfile.txt cscript filename.vbs al prompt dei comandi per reindirizzare l'output dello script filename.vbs a outfile.txt.
Nella tabella seguente sono elencati esempi di script che possono essere usati per ottenere vari tipi di dati dal computer locale.
Come faccio a...
Classi o metodi WMI
... determinare se un computer remoto è stato avviato in modalità provvisoria con stato Rete?
Usare la classe Win32_ComputerSystem e controllare il valore della proprietà 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
... determinare se un screenver del computer richiede una password?
Usare la classe Win32_Desktop e controllare il valore della proprietà 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
... verificare che lo schermo di un computer sia stato impostato per 800 pixel di 600 pixel?
Usare la classe Win32_DesktopMonitor e controllare i valori delle proprietà ScreenHeight e 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 = nome host
<# Visualizzare i dettagli del desktop #> "Sono presenti desktop {0} in {1} come indicato di seguito:" -f $desktops. Conteggio, $hostname "" $i=1 numero di desktop in questo sistema
... determinare da quanto tempo è in esecuzione un computer?
Utilizzare la classe Win32_OperatingSystem e la proprietà LastBootUpTime. Sottrarre tale valore dall'ora corrente per ottenere il tempo di attività del sistema.
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
funzione WMIDateStringToDate($Bootup) { [System.Management.ManagementDateTimeconverter]::ToDateTime($Bootup) }
<# Script principale #> $Computer = "." # regolare in base alle esigenze $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