Metodo Win32Shutdown della classe Win32_OperatingSystem
Il metodo di classe WMI Win32Shutdownfornisce il set completo di opzioni di arresto supportate dai sistemi operativi Win32. Sono inclusi logoff, arresto, riavvio e forzatura di un disconnessione, arresto o riavvio.
In questo argomento viene utilizzata la sintassi MOF (Managed Object Format). Per altre informazioni sull'uso di questo metodo, vedere Chiamata di un metodo.
Sintassi
uint32 Win32Shutdown(
[in] sint32 Flags,
[in] sint32 Reserved =
);
Parametri
-
Flag [in]
-
Set di flag bitmap per arrestare il computer. Per forzare un comando, aggiungere il flag Force (4) al valore del comando. L'uso di Force in combinazione con l'arresto o il riavvio in un computer remoto arresta immediatamente tutto (inclusi WMI, COM e così via) o riavvia il computer remoto. In questo modo si ottiene un valore restituito indeterminato.
-
0 (0x0)
-
Disconnettersi: consente di disconnettere l'utente dal computer. La disconnessione arresta tutti i processi associati al contesto di sicurezza del processo che ha chiamato la funzione di uscita, registra l'utente corrente fuori dal sistema e visualizza la finestra di dialogo di accesso.
-
4 (0x4)
-
Disconnessione forzata (0 + 4): registra immediatamente l'utente dal computer e non notifica alle applicazioni che la sessione di accesso sta terminando. Ciò può comportare una perdita di dati.
-
1 (0x1)
-
Arresto : arresta il computer a un punto in cui è sicuro spegnere l'alimentazione. Tutti i buffer di file vengono scaricati su disco e tutti i processi in esecuzione vengono arrestati. Gli utenti visualizzano il messaggio,
It is now safe to turn off your computer.
Durante l'arresto, il sistema invia un messaggio a ogni applicazione in esecuzione. Le applicazioni eseguono qualsiasi pulizia durante l'elaborazione del messaggio e restituiscono True per indicare che possono essere terminate.
-
5 (0x5)
-
Arresto forzato (1 + 4): arresta il computer in un punto in cui è sicuro spegnere l'alimentazione. Tutti i buffer di file vengono scaricati su disco e tutti i processi in esecuzione vengono arrestati. Gli utenti visualizzano il messaggio,
It is now safe to turn off your computer.
Quando viene usato l'approccio di arresto forzato, tutti i servizi, incluso WMI, vengono arrestati immediatamente. Per questo motivo, non sarà possibile ricevere un valore restituito se si esegue lo script su un computer remoto.
-
2 (0x2)
-
Riavvia : arresta e quindi riavvia il computer.
-
6 (0x6)
-
Riavvio forzato (2 + 4): arresta e quindi riavvia il computer.
Quando viene usato l'approccio di riavvio forzato, tutti i servizi, incluso WMI, vengono arrestati immediatamente. Per questo motivo, non sarà possibile ricevere un valore restituito se si esegue lo script su un computer remoto.
-
8 (0x8)
-
Spegnimento : arresta il computer e disattiva l'alimentazione (se supportata dal computer in questione).
-
12 (0xC)
-
Spegnimento forzato (8 + 4): arresta il computer e disattiva l'alimentazione (se supportata dal computer in questione).
Quando viene usato l'approccio di spegnimento forzato, tutti i servizi, incluso WMI, vengono arrestati immediatamente. Per questo motivo, non sarà possibile ricevere un valore restituito se si esegue lo script su un computer remoto.
Riservato [in]
Un mezzo per estendere Win32Shutdown. Attualmente, il parametro Reserved viene ignorato.
Valore restituito
Restituisce zero (0) per indicare l'esito positivo. Qualsiasi altro numero indica un errore. Per i codici di errore, vedere Costanti errore WMI o WbemErrorEnum. Per i valori HRESULT generali, vedere Codici di errore di sistema.
-
Operazione riuscita (0)
-
Altro (1-4294967295)
Osservazioni:
Per una gestione più efficiente dei computer in un'organizzazione, gli amministratori devono avere la possibilità di arrestare o riavviare in remoto un computer o di disconnettersi in remoto da un utente. La possibilità di eseguire queste attività consente agli amministratori di installare software, riconfigurare le impostazioni del computer, rimuovere i computer dalla rete ed eseguire altre attività senza dover arrestare o riavviare manualmente ogni computer.
Ad esempio, per eseguire un aggiornamento di rete, potrebbe essere necessario arrestare tutti i computer in esecuzione in un determinato segmento di rete. Per forzare un aggiornamento di Criteri di gruppo, è necessario disconnettere gli utenti dai computer. Se un virus informatico è presente in qualsiasi punto dell'organizzazione, è possibile arrestare il maggior numero possibile di computer, prima che il virus abbia la possibilità di diffondersi. La possibilità di arrestare e riavviare i computer e di disconnettere gli utenti a livello di codice anziché manualmente può essere un enorme risparmio di tempo.
Il processo chiamante deve avere il privilegio edizione Standard_SHUTDOWN_NAME.
Il metodo Win32ShutdownTracker fornisce lo stesso set di opzioni di arresto supportate dal metodo Win32Shutdown in Win32_OperatingSystem , ma consente anche di specificare commenti, un motivo per l'arresto o un timeout.
Il metodo Win32Shutdown non ha un parametro per bloccare una workstation, lasciando l'utente connesso. Tuttavia, le workstation possono essere bloccate dalla riga di comando usando il comando seguente:
% windir %\System32\rundll32.exe user32.dll,LockWorkStation
Esempi
L'esempio di PowerShell seguente usa il metodo Win32Shutdown per arrestare il computer specificato.
$computername= "."
$win32OS = get-wmiobject win32_operatingsystem -computername $computername
$win32OS.psbase.Scope.Options.EnablePrivileges = $true
$win32OS.win32shutdown(8)
Nell'esempio di codice di PowerShell seguente viene usato il cmdlet EnableAllPrivileges dal cmdlet get-wmiobject per ottenere i privilegi appropriati.
$win32OS = get-wmiobject win32_operatingsystem -computername $computername -EnableAllPrivileges
$win32OS.win32shutdown(8)
Di seguito VB.NET codice di esempio usa il metodo Shutdown per riavviare o disconnettere un sistema.
Dim
testResult AsSingle
Dim WMIServiceObject, ComputerObject AsObject
'Now get some privileges
WMIServiceObject = GetObject(
"Winmgmts:{impersonationLevel=impersonate,(Debug,Shutdown)}")
ForEach ComputerObject In WMIServiceObject.InstancesOf("Win32_OperatingSystem")
testResult = ComputerObject.Win32Shutdown(2 + 4, 0)
'reboot
'testResult = ComputerObject.Win32Shutdown(0, 0) 'logoff
' testResult = ComputerObject.Win32Shutdown(8 + 4, 0) 'shutdown
If testResult <> 0 Then
MsgBox("Sorry, an error has occurred while trying to perform selected operation")
Else
'Operation selected in statement above if condition would be carried out
EndIf
Next
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista |
Server minimo supportato |
Windows Server 2008 |
Spazio dei nomi |
Root\CIMV2 |
MOF |
|
DLL |
|
Vedi anche