Condividi tramite


Gestione remota e WMI di Windows

Gestione remota Windows può essere usata per recuperare i dati esposti da Strumentazione gestione Windows (WMI e MI). È possibile ottenere dati WMI con script o applicazioni che usano l'API Scripting WinRM o tramite lo strumento da riga di comando Winrm .

WinRM supporta la maggior parte delle classi e delle operazioni WMI familiari, inclusi gli oggetti incorporati. WinRM può sfruttare WMI per raccogliere dati sulle risorse o gestire le risorse in un sistema operativo basato su Windows. Ciò significa che è possibile ottenere dati sugli oggetti, ad esempio dischi, schede di rete, servizi o processi nell'azienda tramite il set esistente di classi WMI. È anche possibile accedere ai dati hardware disponibili dal provider IPMI WMI standard.

Identificazione di una risorsa WMI

È possibile fare riferimento a una classe WMI come risorsa in WinRM e nel protocollo WS-Management: un tipo di entità gestita , ad esempio un servizio o un disco.

Una classe o un metodo WMI viene identificata da un URI, proprio come qualsiasi altra risorsa quando si usa il protocollo WS-Management. L'URI può specificare una risorsa WMI (classe), un'azione WMI (metodo) o identificare un'istanza specifica di una classe nei messaggi inviati tramite una rete. Per altre informazioni, vedere URI delle risorse.

Costruzione del prefisso URI per le classi WMI

Il prefisso URI contiene una parte fissa e lo spazio dei nomi WMI. Ad esempio, il prefisso URI in Windows Server che contiene la parte fissa del prefisso è: http://schemas.microsoft.com/wbem/wsman/1/wmi/<WmiNamespace>. Ciò consente di generare il prefisso URI per qualsiasi spazio dei nomi WMI. Ad esempio, per accedere allo spazio dei nomi WMI radice\predefinito , usare il prefisso URI seguente: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/default/.

La maggior parte delle classi WMI per la gestione si trova nello spazio dei nomi root\cimv2 . Per accedere alle classi e alle istanze nello spazio dei nomi root\cimv2 , usare il prefisso URI: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/. Per altre informazioni, vedere URI delle risorse.

Generazione di un URI completo per le classi WMI

L'URI fornito, allo strumento da riga di comando Winrm o a uno script, è costituito dal prefisso e dalla specifica della risorsa.

La procedura seguente descrive come generare un URI di risorsa per ottenere una classe WMI o da usare in un'operazione di enumerazione.

Per generare un URI di risorsa per una classe WMI

  1. Iniziare con il prefisso che indica che deve essere usato lo schema del protocollo WS-Management.

    https://schemas.microsoft.com/wbem/wsman/1

    Il prefisso URI della risorsa per le classi WMI è sempre lo stesso. Per altre informazioni, vedere Prefissi URI.

  2. Aggiungere lo spazio dei nomi WMI al prefisso.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/

  3. Aggiungere il nome della classe.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service

  4. Per impostare il valore di una proprietà o per richiamare un metodo specifico, aggiungere il valore o i valori necessari per la classe.

    http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=Winmgmt

    Se si lascia vuoto il valore della chiave, non si modifica il valore della proprietà originale.

    Nota

    Lasciando vuoto il valore della chiave, il valore della proprietà viene impostato su NULL.

     

Individuazione di una risorsa WMI con WinRM

È possibile ottenere dati WMI tramite lo strumento da riga di comando, Winrm o tramite uno script di Visual Basic che usa l'API Scripting WinRM. Non si usa un percorso WMI per individuare una risorsa. Si converte invece lo spazio dei nomi e la gerarchia WMI in un URI.

L'URI WinRM per una classe WMI contiene due parti: il prefisso URI e la classe a cui si vuole accedere.

Ad esempio, l'URI seguente può essere fornito al metodo Session.Enumerate per elencare tutti i servizi in un computer. Il prefisso URI è e la classe è http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service.

strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"

In WMI elencare i dati per tutte le istanze di una risorsa o di una classe in diversi modi:

In WinRM è possibile elencare tutte le istanze di una risorsa: Session.Enumerate.

strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service"
Set colServices = objSession.Enumerate( strResource )

Individuazione di un'istanza specifica di una risorsa WMI

In WMI è possibile designare una determinata istanza di una classe specifica specificando i valori per le proprietà della chiave o eseguendo una query per un'istanza che corrisponde a un elenco di valori di proprietà. Le proprietà delle chiavi hanno il qualificatore chiave WMI.

È possibile ottenere un'istanza specifica di una classe in diversi modi:

  • Una chiamata a Session.Enumerate con i parametri di filtro e di dialetto per creare una query.

    RemoteComputer = "servername.domain.com"
    strDialect = "http://schemas.microsoft.com/wbem/wsman/1/WQL"
    strResource = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/*"
    Set objWsman = CreateObject("Wsman.Automation")
    Set objSession = objWsman.CreateSession("https://" & RemoteComputer)
    
    strFilter = "SELECT * FROM Win32_Share WHERE Name='Admin$'"
    Set objResultSet = objSession.Enumerate(strResource, strFilter, strDialect)
    
  • Chiamata a SWbemServices.Get. Per Session.Get, è necessario specificare uno o più valori chiave specifici, preceduti da un punto interrogativo (?).

    Il formato dell'URI per un'istanza specifica è http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/WMI_Class?Key1=Value.

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Name=winmgmt"
    

    Una classe WMI può avere più di una chiave. Le coppie nome chiave-valore sono separate da un segno "+". In tal caso, il formato è: http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Service?Key1=Value1+Key2=Value2.

    La sintassi WinRM per ottenere un oggetto WMI singleton è diversa da WMI. Un singleton è una classe WMI definita in modo che sia consentita una sola istanza. Win32_CurrentTime o Win32_WMISetting sono esempi di una classe singleton WMI.

    La sintassi WMI per i singleton è illustrata nell'esempio di codice VBScript seguente.

    Set TimeObject = objWMIService.Get("Win32_CurrentTime=@")
    

    Nell'esempio seguente viene illustrata la sintassi singleton WinRM che non usa "@".

    strResourceUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_CurrentTime"
    
  • Aggiunta di un selettore a un oggetto ResourceLocator o IWSManResourceLocator .

    Nell'esempio di codice VBScript seguente viene illustrato come usare un selettore per ottenere un'istanza specifica di Win32_Processor.

    strUri = "http://schemas.microsoft.com/wbem/wsman/1/wmi/root/cimv2/Win32_Processor"
    Set objWsman = CreateObject("Wsman.Automation")
    Set Session = objWsman.CreateSession
    Set Locator = objWsman.CreateResourceLocator(strUri)
    Locator.AddSelector "DeviceID", "CPU0"
    

Informazioni sulla gestione remota di Windows

Prefissi URI

URI risorse

Scripting in Gestione remota Windows