Condividi tramite


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
CIMWin32.mof
DLL
CIMWin32.dll

Vedi anche

Classi del sistema operativo

Win32_operatingsystem

Win32ShutdownTracker

Attività WMI: Gestione desktop

Esecuzione di operazioni con privilegi con VBScript